Q: Как зарегистрировать приложение в системе? Как программно сделать так, чтобы устанавливаемое ПО добавилось в "Programs and Features"? Нашла информацию, что нужно сделать некоторые записи в реестре, но никакой конкретики.

A: Обычно в "Programs and Features" регистрируются не программы, а их установщики. Сам раздел реестра находится по пути:


*

*32 - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

*64 - HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Для регистрации создаем раздел, название которого обычно берется GUID программы (можно и что то другое).
Далее в этом разделе создаем два обязательных строковых параметра:


*

*DisplayName - Имя программы.

*UninstallString - Путь до файла удаления.


Все, уже сейчас в разделе "Programs and Features" вы увидите свое приложение.
Для установки других значений (версии, иконки и др.) вы можете заглянуть в документацию.

Теперь по поводу программного пути:
Тут пойдет простейшая работа с реестром.


*

*Ищем ключ реестра (Uninstall):
Обратите внимание на true в конце, это означает, что мы открываем ключ для чтения!
var uninstallKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall", true);


*Создаем раздел с названием нашей программы:
var programKey = uninstallKey?.CreateSubKey("MyProgram");


*Заполняем раздел данными и закрываем:
programKey?.SetValue("DisplayName", "Super Program!");
programKey?.SetValue("UninstallString", "C:\\Program.exe");
programKey?.Close();

Все, после этого у нас появится новое приложение в "Programs and Features".
Заметьте, что для этого нужны права администратора!
