Цикл удаления ключей - PullRequest
       15

Цикл удаления ключей

0 голосов
/ 07 февраля 2019

У меня странная проблема ... У меня есть скрипт 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 существующие записи ... что неправильно

Это сводит меня с ума... Большое спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...