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