Да,там,
Drongo, верно говорит.
Вот небольшой скрипт получения списка программ:
@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,автозапуск,ассоциации и т.д. то есть запись обязательна только в те разделы,без которых работать не будет.
Либо если эта запись появляется в следствии работы программы.