我在 VB 中有一个代码来查找我已安装的 COM dll 的版本。相关代码是:
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。我试过“代码库”。我还尝试使用空字符串来获取默认值。
我还尝试在变量中获取函数的值,如下所示:
set vers=objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,sValue
vres 仅获取版本中主要修订的值。例如,如果版本是 2.4.7.0,那么 vers 的值为 2