检查注册表值

时间:2015-01-19 15:45:34

标签: vbscript registry

在验证脚本中添加以下行,以检查是否已添加注册表值并获取消息

  验证HKLM \ SOFTWARE \ OLEforRetail \ ServiceOPOS \ MSR \ REDIRON_MSR的注册表值时出现

错误

以下是代码:

Dim strRegvalue

strRegvalue = g_objShell.RegRead("HKLM\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\REDIRON_MSR\")

If LCase(strRegvalue) = "True" Then
  Call WriteToLog("HKLM\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\REDIRON_MSR value verified successfully")
Else
  RegSuccessCode = 111
  Call WriteToLog("Error occurred while verifying the Registry Value for HKLM\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\REDIRON_MSR")
End If

你可以让我知道我在哪里出错。

1 个答案:

答案 0 :(得分:1)

如果要使用RegRead检查是否存在注册表项,可以通过读取密钥的默认值来执行此操作。但是,您必须启用错误处理,因为RegRead如果无法读取值(即密钥不存在)将引发错误:

key = "HKLM\SOFTWARE\OLEforRetail\ServiceOPOS\MSR\REDIRON_MSR\"

On Error Resume Next
g_objShell.RegRead key
If Err Then
  WScript.Echo key & " does not exist."
Else
  WScript.Echo key & " exists."
End If
On Error Goto 0

更好的方法是使用WMI注册表方法,例如EnumKey

Set reg = GetObject("winmgmts://./root/default:StdRegProv")

Const HKLM = &h80000002
key = "SOFTWARE\OLEforRetail\ServiceOPOS\MSR\REDIRON_MSR\"

retval = reg.EnumKey(HKLM, key, Null)
If retval = 0 Then
  WScript.Echo key & " exists."
Else
  WScript.Echo key & " does not exist."
End If