分類:[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の方を使えば良いのかと思ったのですが、
その指定の仕方もわからなかったため、お知恵を拝借出来ればと思います。