1

インストールした 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 になります。

4

1 に答える 1