遍历卸载密钥

时间:2019-02-07 09:23:35

标签: vbscript uninstall regedit

我有一个奇怪的问题...我有一个vbs脚本,该脚本枚举了所有卸载子项,并向我返回我要搜索的DisplayName的值。 为了理解,下面是这段代码:

strsoft = "MyApplicationName"
strKeyPath = "software\microsoft\windows\currentversion\uninstall" ' Root level
    objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
    For Each subkey In arrSubKeys
        sDisplayName = objShell.Regread("HKLM\" & strKeyPath & "\" & subkey & "\Displayname")
        sVersion = objShell.Regread("HKLM\" & strKeyPath & "\" & subkey & "\DisplayVersion")
        if instr(lcase(sDisplayName), lcase(strsoft)) > 0 then
            sUninstallString = objShell.Regread("HKLM\" & strKeyPath & "\" & subkey & "\uninstallstring")

            If instr(lcase(sUninstallString), "msiexec") Then

                ' msi find

                If ReturnCode = 0 OR ReturnCode = 3010 Then 
                    ' log success
                Else
                    ' log fail
                End If
            Else ' Uninstallstring <> msiexec
                ' Not an msi
            End If
        end if
    Next

但是,如果注册表中有一些子项不包含“ DisplayName”值,则它会返回错误信息……我不知道该如何解释:(

例如: {F2D34ABB-6834-4372-8199-870FCF59EFAB}:DisplayName = MyApplicationName; DisplayVersion = 1.0,依此类推。 在下面我有: {F38DB479-C9A3-412F-83C8-09DFF5BBC210}仅包含一个条目:“ DisplayVersion = 12.5”

我的脚本告诉我,我的应用程序有2个现有条目...这是错误的

这让我发疯了...非常感谢您的帮助。

0 个答案:

没有答案