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