Поиск установленных программ.

Alex1983

Разработчик
Сообщения
1,145
Реакции
243
Всем день добрый. Вопрос такой, где в реестре можно просмотреть какие программы у меня установлены?
И вообще есть ли правило, записи значений(параметров)устанавливаемой программы в реестр?
 
Да,там, Drongo, верно говорит.

Вот небольшой скрипт получения списка программ:

CMD/BATCH:
@echo off
rem Этот командный файл записывает список программ, установленных на 
rem удалённом компьютере.
rem %1 Сетевое имя компьютера в формате PCNAME (пустое значение означает
rem    локальный компьютер).

rem Определяем путь к папке реестра
set reg_key=hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
if not "%1" == "" set reg_key=\\%~1\%reg_key%

rem Перебираем установленные программы
for /F %%a in ('reg query "%reg_key%"') do ^
for /F "tokens=1,2*" %%b in ('reg query "%%a"') do ^
if "%%b"=="DisplayName" echo %%d

Так же если усугубить то можно проверить значения исполняемых файлов и их путей в псевдонимах aplication,по значениям в расширениях и т.д.
Это если программа есть,а в списке установленных - нет.


Так же можно отфильтровать software разделы в hklm и hkcu
И вообще есть ли правило, записи значений(параметров)устанавливаемой программы в реестр?
Устанавливать можно как угодно,запись в реестре ограничивается лишь тем ,какой опционал закладывается в программу.
Portable,автозапуск,ассоциации и т.д. то есть запись обязательна только в те разделы,без которых работать не будет.
Либо если эта запись появляется в следствии работы программы.
 
Последнее редактирование:
Кирилл, скрипт косячный?
Screenshot_1.jpg
 
Здесь полный список разделов, которые различаются (Redirected), являются общими (Shared) или отражаются, т.е. записываются в обе ветви (Reflected) при вызове из 32-разрядных программ.

Кирилл, скрипт косячный?
set reg_key=hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
в конце слэш лишний.

CMD/BATCH:
@echo off
SetLocal EnableExtensions

(for %%k in (
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
) do ^
for /F %%a in ('reg query "%%k" 2^>NUL') do ^
for /F "tokens=1,2*" %%b in ('reg query "%%a" /v "DisplayName" 2^>NUL') do ^
if /i "%%~b"=="DisplayName" echo.%%d) > "Inst.txt"

:: из 866 в юникод
cmd /U /C type "Inst.txt" > "Inst_U.txt"
rundll32 shell32,ShellExec_RunDLL "%cd%\Inst_U.txt"
pause

Лучше на другом языке. Reg.exe юникод не поддерживает. Например, есть такие имена: µTorrent.
 
Последнее редактирование:
Назад
Сверху Снизу