无法使用VBScript找到特定的注册表项
对于自动化测试,我必须检查注册表中是否生成了某些键。 到目前为止,我有以下脚本:无法使用VBScript找到特定的注册表项,vbscript,registry,automated-tests,hp-uft,Vbscript,Registry,Automated Tests,Hp Uft,对于自动化测试,我必须检查注册表中是否生成了某些键。 到目前为止,我有以下脚本: 'Registry Path Const HKCR = &H80000000 'HKEY_CLASSES_ROOT (0) Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE (1) Dim oReg: Set oReg = GetObject("winmgmts:!root/default:StdRegProv") 'Dim Arrays D
'Registry Path
Const HKCR = &H80000000 'HKEY_CLASSES_ROOT (0)
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE (1)
Dim oReg: Set oReg = GetObject("winmgmts:!root/default:StdRegProv")
'Dim Arrays
Dim RegRootArray(1)
Dim RegMachineArray(6)
Dim CurrentArray()
'HKEY_CLASSES_ROOT Array
RegRootArray(0) = "AlmBtPgLib.ALMPlugIn.1\CLSID"
RegRootArray(1) = "AlmBtPgLib.ALMPlugIn\CurVer"
'HKEY_LOCAL_MACHINE Array
RegMachineArray(0) = "SOFTWARE\Macrovision\FlexNet Publisher"
RegMachineArray(1) = "SOFTWARE\Company\SWS\PlugIns\AlmBtPgLib.ALMPlugIn"
RegMachineArray(2) = "SYSTEM\ControlSet001\services\FlexNet Licensing Service"
RegMachineArray(3) = "SYSTEM\CurrentControlSet\services\FlexNet Licensing Service"
RegMachineArray(4) = "SOFTWARE\Company\LMS"
RegMachineArray(5) = "SYSTEM\CurrentControlSet\services\aksfridge"
RegMachineArray(6) = "SYSTEM\CurrentControlSet\services\hasplms"
'Loop through both Arrays and check Registry
For i = 0 To 1
If i=0 Then
ReDim CurrentArray(UBound(RegRootArray)) 'Copy Values from RegRootArray to CurrentArray
For arrI1 = LBound(RegRootArray) To UBound(RegRootArray)
CurrentArray(arrI1) = RegRootArray(arrI1)
Next
Key = HKCR
Else
ReDim CurrentArray(UBound(RegMachineArray)) 'Copy Values from RegMachineArray to CurrentArray
For arrI2 = LBound(RegMachineArray) To UBound(RegMachineArray)
CurrentArray(arrI2) = RegMachineArray(arrI2)
Next
Key = HKLM
End If
'Check Keys in Registry
For Each Path In CurrentArray
If oReg.EnumKey(Key, Path, arrSubKeys) = 0 Then
MsgBox(Path & " exist") 'for development
Else
MsgBox(Path & " don't exist") 'for development
End If
Next
Next
出于某种原因
显示为不存在。
我检查了插件或SWS是否存在。
他们都没有。公司确实存在
我手动检查了注册表和路径。两人似乎都很好。
创建新密钥时,我也找不到它。
我重新启动了系统,没有变化。
EnumKey的返回值为2。简单地说2。
我在网上搜索,但找不到解决办法。
谢谢你的帮助。
我明天什么都查不到,因为我今天下班了
更新:
当我运行脚本extern时,比如checkReg.vbs,它就可以工作了。
可能是UFT没有得到正确的许可吗?尽管两者都存在,.vbs脚本和UFT在同一用户下运行。
干杯
sam在脚本或Visual Basic中,如果成功,方法EnumKey将返回一个整数值,该整数值为0。如果函数失败,根据Microsoft的说法,返回值是一个非零错误代码 你不应该用这样的东西来代替:
Set objReg = Server.CreateObject("WScript.Shell")
RegValue = objReg.RegRead(yourregistryentrypath)
也许是安全许可?你试过冒充管理员吗?GetObjectwinmgmts:{impersonationLevel=impersonate}!\\\root\default:StdRegProvI尝试过。无更改短更新:我更改了上述密钥的权限,清理了注册表并关闭了UAC。没有更改。是的,我检查了返回值,但值应该是0或类似于0x8004xxx的数字,但我得到的只是值2。我不想要密钥的值,我只想检查它是否存在。如果您的密钥没有值或未找到,它会给您什么?如果我搜索一个明显不存在的密钥,我会得到返回值2,根据Microsoft,这意味着什么?
Set objReg = Server.CreateObject("WScript.Shell")
RegValue = objReg.RegRead(yourregistryentrypath)