Как искать ключ в реестре с подстановочными знаками в пакете или VBScript? - PullRequest
2 голосов
/ 21 сентября 2011

Мне нужно сделать пакет или VBScript, который удаляет все версии Mozilla Firefox. В реестре есть ключ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (Version). 

Version имеет значение установленной версии Firefox. И под этим ключом есть запись UninstallString. Мне нужно как-то прочитать это значение. Проблема в том, что версия является переменной. Так что, если Mozilla Firefox 1.0.1 не установлен, ключ будет выглядеть так:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (1.0.1).

Если установлена ​​2.0.2, то ключ будет выглядеть так:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (2.0.2).

Но я не знаю, какая версия установлена. Так как же я могу прочитать этот ключ (и значение Uninstall), не зная, какая версия установлена? Может ли кто-нибудь помочь мне в этом?

Спасибо.

1 Ответ

2 голосов
/ 21 сентября 2011

Как насчет:

const HKEY_LOCAL_MACHINE = &H80000002
const REG_PATH = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
const FOX_MASK = "Mozilla Firefox*"

dim re: set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = FOX_MASK

dim oReg: set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
oReg.EnumKey HKEY_LOCAL_MACHINE, REG_PATH, arrSubKeys

dim strValue
for each subkey In arrSubKeys
    if re.test(subkey) then
       oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE, REG_PATH & subkey, "UninstallString", strValue
       WScript.StdOut.WriteLine "Version: " & subkey
       WScript.StdOut.WriteLine "Uninstaller: " & strValue
    end if
next

Для меня выводов:

<b>Version:</b> Mozilla Firefox 7.0 (x86 en-GB)</p> <p><b>Uninstaller:</b> C:\Program Files\Mozilla Firefox\uninstall\helper.exe

(Обратите внимание, что это отличается от вашего шаблона)

...