WinXP、Win2008Server64ビットで問題なかったソフトがあり、それをWin7 Professional 64ビットにインストールしたのですが、上手くODBCが作れません。
ODBCCP32.DLLの問題かな?とも思いますが、何か動かせる方法はありますか?
Private Const ODBC_ADD_DSN = 1 '* ユーザーデータ ソースの追加
Private Const ODBC_CONFIG_DSN = 2 '* ユーザーデータ ソースの編集
Private Const ODBC_REMOVE_DSN = 3 '* ユーザーデータ ソースの削除
Private Const ODBC_ADD_SYS_DSN = 4 '* システムデータソースを追加
Private Const ODBC_CONFIG_SYS_DSN = 5 '* システムデータソースを編集
Private Const ODBC_REMOVE_SYS_DSN = 6 '* システムデータソースを削除
Private Const ODBC_REMOVE_DEFAULT_DSN = 7 '* デフォルトDSNを削除
' API 宣言
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, _
ByVal fRequest As Long, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As Long
Private Declare Function SQLInstallerError Lib "ODBCCP32.DLL" _
(ByVal iError As Integer, ByRef pfErrorCode As Long, _
ByVal lpszErrorMsg As String, ByVal cbErrorMsgMax As Integer, _
ByRef pcbErrorMsg As Integer) As Long
Function fnODBC_Sakusei(strUid As String, strPwd As String) As Boolean
' データソースの追加
Dim intRet As Long
Dim strDriver As String
Dim strParam As String
' ODBCドライバを指定する
strDriver = "SQL Server"
' データソースとして登録する属性を NullChar で区切り指定する
strParam = "DSN=" & Trim(strDName) & vbNullChar
strParam = strParam & "Description=" & vbNullChar
strParam = strParam & "Server=" & strCName & vbNullChar
strParam = strParam & "Database=" & Trim(strDName2) & vbNullChar
DoEvents
Debug.Print "ODBC"
'***ODBCをいったん削除***
On Error Resume Next
DoEvents
intRet = SQLConfigDataSource(0, ODBC_REMOVE_SYS_DSN, strDriver, strParam)
DoEvents
On Error GoTo 0
' データソースの登録
intRet = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, strDriver, strParam)
if intRet=1 then
'成功
fnODBC_Sakusei = True
else
'失敗
'ここに来てしまいます。
End if
End Function
エラーをチェックすると
『#19:レジストリに書き込めません』
『#11:ドライバーのConfigDSN、ConfigDriver、またはConfigTranslatorが失敗しました』
と出てしまいました。
APIが変わった影響で、どうしようもないのかな? とは思いますが、出来れば何とかしたいのですが……。
どなたかお分かりになる方、教えてください。
> それをWin7 Professional 64ビットにインストールしたのですが、上手くODBCが作れません。
システムデータソースは、HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI に、
ユーザーデータソースは、HKEY_CURRENT_USER\Software\ODBC\ODBC.INI に書かれます。
しかし一般ユーザーは、HKLM\Software\ を参照はできますが書き込みはできないため、
> 『#19:レジストリに書き込めません』
が発生したのではないでしょうか。
EXE を管理者モードで実行するか、あるいはそれを強制するために、
マニフェストで requestedExecutionLevel を埋め込んでみては如何でしょう。
> WinXP、Win2008Server64ビットで問題なかったソフトがあり、
XP(x64) とも XP(x86) とも読み取れますが、32bit 版ですか?
> Win2008Server
細かい話ですが、2003 以降は語順が変わっているので、
Win2008Server ではなく WinServer2008 だったりします。
Windows Server 2008 R2
Windows Server 2008
Windows Server 2003 R2
Windows Server 2003
Windows 2000 Server
Administratorのユーザーでログインしたら、上手くいきました。^^;
ただ、別のユーザーだとアドミニ権限を持たせていても上手くいきません。
→実行ファイルを右クリックして『管理者として実行』なら上手くいきました。何故?
どこか設定すれば上手くいくのでしょうか?
魔界の仮面弁士さん、ありがとうございます。^^
書き方に色々と不備があり、申し訳ありません。^^;
>> WinXP、Win2008Server64ビットで問題なかったソフトがあり、
>XP(x64) とも XP(x86) とも読み取れますが、32bit 版ですか?
WindowsXP Professional 32bit 版です。
>> Win2008Server
>細かい話ですが、2003 以降は語順が変わっているので、
>Win2008Server ではなく WinServer2008 だったりします。
Windows Server 2008 R2 です。
>EXE を管理者モードで実行するか、あるいはそれを強制するために、
>マニフェストで requestedExecutionLevel を埋め込んでみては如何でしょう。
やはり、管理者モードの問題ですか。^^;
上記の内容で、試してみます!
数年前の投稿ですが、下記が参考になるかと思います。
http://dobon.net/vb/bbs/log3-37/22766.html
魔界の仮面弁士さん、ありがとうございました!
上手くいきました。^^
※もっと早くに解決したのですが、なぜか書き込みエラーが出て投稿できませんでした。^^: