C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 64bit環境における32bitデータソース登録


(過去ログ 131 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■77531 / inTopicNo.1)  64bit環境における32bitデータソース登録
  
□投稿者/ sa (1回)-(2015/10/29(Thu) 19:22:02)

分類:[VB.NET/VB2005 以降] 

2015/10/29(Thu) 19:29:00 編集(投稿者)
VB.NET
開発環境:Visual Studio Express 2013

ODBCの登録処理をフォーム上のボタンから行いたくて、
ネットの記事を参考に以下のソースを組みました。

--------------------------------------------------------

Module ModuleItem
    <DllImport("ODBCCP32.DLL", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Function SQLConfigDataSource(ByVal hwndParent As Integer, _
                                                ByVal fRequest As Integer, _
                                                ByVal lpszDriver As String, _
                                                ByVal lpszAttributes As String) As Integer

    End Function
End Module


Public Class Form1

    Private Sub CreateODBC()

        Dim os As System.OperatingSystem = System.Environment.OSVersion
        Dim strDriver As String
        Dim strParam As String

        'ODBC作成のパラメータをセットする
        AddOdbcDNS = "TEST"
        AddOdbcDescription = "てすと"
        AddOdbcService = "TEST"
        AddOdbcUser = "test"
        AddOdbcPass = "test"

        ' ODBCドライバを指定する
        If os.Version.Major = 6 Then
            If os.Version.Minor = 1 Then
                'Windows7の場合
                strDriver = "Oracle in OraClient11g_home1"
            ElseIf os.Version.Minor = 2 Or 3 Then
                'Windows8の場合
                strDriver = "Oracle in OraClient11g_home1_32bit"
            End If
        Else
            Exit Sub
        End If

        ' データソースとして登録する属性を Chr(0) で区切り指定する
        strParam = "DSN=" & AddOdbcDNS & Convert.ToChar(0)
        strParam = strParam & "Description=" & AddOdbcDescription & Convert.ToChar(0)
        strParam = strParam & "ServerName=" & AddOdbcService & Convert.ToChar(0)
        strParam = strParam & "UserID=" & AddOdbcUser & Convert.ToChar(0)

        ' データソースの登録
        Dim intRet = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, strDriver, strParam)


        If intRet Then
            MessageBox.Show("データソースを登録しました。", "登録", MessageBoxButtons.OK)
        Else
            MessageBox.Show("登録に失敗しました。" & vbLf & "管理者権限で実行し直してみて下さい。", "登録", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If

    End Sub

End Class

--------------------------------------------------------

上記で実行した場合、正常にODBC登録は出来ました。
しかし、弊社ソフトの環境がWindows8とWindows7の双方のパターンがあり、
Windows8で動かす場合には32bitで登録しないといけないのですが、
このままですと64bitでしか登録できません。
64bit環境で32bitのODBC登録を行うにはどのようにすればよいでしょうか。

DLLをSysWOW64の方を使えば良いのかと思ったのですが、
その指定の仕方もわからなかったため、お知恵を拝借出来ればと思います。

引用返信 編集キー/
■77532 / inTopicNo.2)  Re[1]: 64bit環境における32bitデータソース登録
□投稿者/ WebSurfer (692回)-(2015/10/29(Thu) 20:22:26)
No77531 (sa さん) に返信

質問の意味を十分理解できてないのでハズレかもしれませんが・・・

以下の記事の Step 9 の下のほうの図の「例3.」のようになるのが問題という
ことであれば、プラットフォームターゲットを x86 にして「図4.」のようにす
るということでは対応できないでしょうか?

Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
http://blogs.msdn.com/b/nakama/archive/2008/11/06/part-2-net-framework-2-0-64.aspx

ご参考に Part 1. の方も紹介しておきます。

Part 1. 64 ビット Windows OS の基本知識
http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx

ハズレでしたら失礼しました。
引用返信 編集キー/
■77534 / inTopicNo.3)  Re[2]: 64bit環境における32bitデータソース登録
□投稿者/ sa (2回)-(2015/10/30(Fri) 10:21:39)
No77532 (WebSurfer さん) に返信
> ■No77531 (sa さん) に返信
>
> 質問の意味を十分理解できてないのでハズレかもしれませんが・・・
>
> 以下の記事の Step 9 の下のほうの図の「例3.」のようになるのが問題という
> ことであれば、プラットフォームターゲットを x86 にして「図4.」のようにす
> るということでは対応できないでしょうか?
>
> Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
> http://blogs.msdn.com/b/nakama/archive/2008/11/06/part-2-net-framework-2-0-64.aspx
>
> ご参考に Part 1. の方も紹介しておきます。
>
> Part 1. 64 ビット Windows OS の基本知識
> http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx
>
> ハズレでしたら失礼しました。

WebSurferさん、ご回答ありがとうございます。
何も考えずにプラットフォームをAnyCPUにしており、ご指摘頂いたようにこちらの変更で意図した動作ができました。
ご紹介頂いた参考URLにて32bitと64bit、双方のexeとDLLの関係が理解出来たと思います。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -