インストールした COM dll のバージョンを見つけるためのコードが VB にあります。関連するコードは次のとおりです。
Const HKEY_LOCAL_MACHINE = &H80000002
---------
---------
Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Classes\Wow6432Node\CLSID\{394B1F33-115C-33E5-A008-36E32C5340D9}\InprocServer32"
strValueName = "CodeBase"
objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
---------
---------
strKeyPath = "SOFTWARE\Classes\Wow6432Node\CLSID\{394B1F33-115C-33E5-A008-36E32C5340D9}\Version"
strValueName = "DLLVersion"
objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,sValue
Wscript.Echo sValue
---------
コードを実行すると、次のエラーが表示されます: Directory\file.vbs(37,1) Microsoft VBScript runtime error: Type mismatch
上記のコードの最後の 37 行目:
Wscript.Echo sValue
最初の GetStringValue は正常に動作しています (ここで InProcServer32 を使用しました) たくさん検索しましたが、これを解決する方法がわかりません。
また、別の名前 strValueName を使用してみました。「CodeBase」を試してみました。また、空の文字列を使用してデフォルト値を取得しようとしました。
また、次のように変数の関数の値を取得しようとしました:
set vers=objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,sValue
vres は、バージョンのメイン リビジョンのみの値を取得します。たとえば、バージョンが 2.4.7.0 の場合、vers の値は 2 になります。