0

テスト自動化のために、特定のキーがレジストリで生成されているかどうかを確認する必要があります。これまでのところ、私はこのスクリプトを持っています:

'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

何らかの理由で

"SOFTWARE\Company\SWS\PlugIns\AlmBtPgLib.ALMPlugIn"

存在しないと表示されます。PlugInsまたはSWSが「存在する」か

どうかを確認しました。 それらのどれもしません。会社は存在します。

レジストリとパスを手動で確認しました。どちらも大丈夫そうです。
新しいキーを作成すると、それも見つかりません。
システムを再起動しましたが、変化はありません。
EnumKey の戻り値は 2 です。単純に 2 です。Web

を検索しましたが、解決策が見つかりませんでした。

ご協力いただきありがとうございます。明日は仕事を休むので、ユーティリティを確認することはできません。

アップデート:

スクリプトexternを実行すると、checkReg.vbsと言って動作します。
UFT が何らかの理由で適切な権限を持っていない可能性がありますか? 両方とも、.vbs スクリプトと UFT は同じユーザーの下で実行されます。

乾杯
サム

4

1 に答える 1

0

スクリプトまたは Visual Basic では、メソッド EnumKey は、成功した場合は 0 (ゼロ) の整数値を返します。関数が失敗した場合、Microsoft によると、戻り値はゼロ以外のエラー コードです。

http://msdn.microsoft.com/en-us/library/aa390387%28v=vs.85%29.aspx

代わりに次のようなものを使用しないでください。

    Set objReg = Server.CreateObject("WScript.Shell")
    RegValue = objReg.RegRead(yourregistryentrypath) 
于 2014-05-01T15:21:54.067 に答える