为什么这个WMI脚本不会读取我的注册表字符串值?

时间:2012-09-14 00:40:04

标签: vbscript wmi

我使用technet中的示例尝试从HKLM \ Microsoft \ Windows \ CurrentVersion \ Run中读取dword /字符串,名为MyStartupExe ..它返回空..这个常规示例有效:

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set oReg=GetObject( _
   "winmgmts:{impersonationLevel=impersonate}!\\" &_
    strComputer & "\root\default:StdRegProv")
strKeyPath = "Console"
strValueName = "HistoryBufferSize"
oReg.GetDWORDValue _
   HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
WScript.Echo "Current History Buffer Size: " & dwValue

我对它的改编不起作用。字符串和双字值存在于我正在寻找的密钥路径的注册表中。

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject( _
   "winmgmts:{impersonationLevel=impersonate}!\\" &_
    strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
strValueName = "MyStartUpExe"
oReg.GetDWORDValue _
   HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
WScript.Echo "MyStartupExe" & dwValue

1 个答案:

答案 0 :(得分:0)

请参阅WMI StdRegProv class

或者您可以使用Shell.RegRead来读取您不知道值的数据类型的注册表值。如果RegRead的返回码为0(成功),则存在一个reg值,否则如果返回码将是一些一般错误代码,例如&h800xxxxx等等,则不存在reg值。要检查您的操作系统体系结构类型,请查询Win32_Processor.Architecture值(其中'0'='x86'或'9'='x64')。