VBScript で 32ビット ODBC ドライバの一覧を取得する( ODBC 接続のドライバ文字列を正しく取得したい )

Windows でデータベースに接続する際、ODBC データソースに登録せずに動的に利用する場合には、ドライバの正しい文字列が必要になリます。レジストリエディタで参照すればいいのですが、結構面倒なのでこのスクリプトを使えばすぐ取り出せます。

最初の『管理者として cscript 実行を強制する』は、cscript での実行を強制するついでに実装しています。(なんらかの制限環境でも動くようにとの考慮です。)

目的は、レジストリのキーの一覧ですが、キーの一覧は知る限り、WMI でしか取得できないので、GetObject("Winmgmts:root\default:StdRegProv") でレジストリ処理用のオブジェクトを取得して使用します。

一覧表示は、cscript で実行を強制しているので単純に Wscript.Echo で出力。コマンドプロンプトを新たに作成して実行するので、結果の表示を止めるために、Wscript.StdIn.ReadLine です。
01.' 管理者として cscript 実行を強制する
02.Set obj = Wscript.CreateObject("Shell.Application")
03.if Wscript.Arguments.Count = 0 then
04.        obj.ShellExecute "cscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
05.        Wscript.Quit
06.end if
07. 
08.const WMI_HKEY_LOCAL_MACHINE = &H80000002
09. 
10.Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
11. 
12.strBasePath = "SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI"
13. 
14.Call objRegistry.EnumKey( WMI_HKEY_LOCAL_MACHINE, strBasePath, aKeys )
15. 
16.For Each strKeyPath in aKeys
17.        Wscript.Echo strKeyPath
18.Next
19. 
20.Wscript.StdIn.ReadLine

実際はいくつか変なのが混じっていますが ODBC 接続のドライバ文字列が欲しい場合を想定しているので、その場合はそれは排除して見れると思います。



※ コマンドプロンプトのプロパティで、簡易編集モードを ON にして、範囲をドラッグして右クリックでコピーできます。

※ コマンドプロンプトならば、『reg query HKLM\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI』ですから、リダイレクトしてファイルに表示結果を書き込めばいいでしょう( 但し、キーが全て表示されるのでとても見にくいです )
reg query HKLM\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI > list.txt