У меня есть программа, которая запускается как настольное приложение, но также может быть установлена как служба Windows. Установка выполняется с помощью кнопки «установить как сервис» в графическом интерфейсе. Обработчик события для этой кнопки выглядит так:
ProcessStartInfo psi = new ProcessStartInfo("sc", "description " +
this.ServiceName + " \"" +
((AssemblyDescriptionAttribute)attributes[0]).Description + "\"")
psi.CreateNoWindow = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.Verb = "runas";
Process.Start(psi).WaitForExit();
Что бы я хотел сделать сейчас, это добавить некоторые дополнительные записи в реестр, например:
HKLM\SOFTWARE\MyCompany\Services
, что также требует повышенных привилегий. Но если я использую ту же процедуру, что описана выше с командой «REG ADD», диалоговое окно UAC появится несколько раз - и я не хочу этого.
Итак, каков наилучший способ установить службу Windows и добавить запись реестра в HKLM, когда приглашение UAC вводится только один раз?