无法使用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)