Я пытаюсь выполнить запрос к определенной папке реестра (или как вы хотите ее назвать), чтобы получить некоторую информацию.
В частности, папка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
содержит список установленного программного обеспечения.
Проблема заключается в том, что каждое программное обеспечение идентифицируется с помощью значения случайного ключа, например {0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}
, а не фактического программного обеспечения (например, Skype
).
Это затрудняет поиск идентификатора Skype
, потому что мне нужно перебрать все в этой папке Uninstall
и проверить, соответствует ли значение DisplayName
Skype
(или какому-либо другому имени приложения).
Мне нужно использовать пакетный синтаксис ... это то, что я имею до сих пор, но на разных компьютерах он не работает одинаково, возможно, я получаю разные переменные, назначенные на основании некоторого ошибочного форматирования вывода reg?Я не знаю.Могу ли я использовать структуру данных, чтобы содержать любые reg
выходные данные?Что-нибудь будет работать.
@echo off
for /f "tokens=*" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall') do (
for /f "tokens=2,* delims= " %%b in ('reg query %%a /v Publisher') do (
IF "%%c" == "Skype Technologies S.A." (
for /f "tokens=2,* delims= " %%d in ('reg query %%a /v UninstallString') do (
echo %%e
)
)
)
)
Есть ли более чистый и безопасный способ добиться этого в партии?