Установите сервис и добавьте запись реестра под Vista + - PullRequest
0 голосов
/ 23 ноября 2010

У меня есть программа, которая запускается как настольное приложение, но также может быть установлена ​​как служба 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 вводится только один раз?

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Что касается установки сервиса.
Можно попробовать topshelf .Это простой в использовании и очень мощный.

1 голос
/ 23 ноября 2010

Создайте небольшой исполняемый файл или командный файл, который выполняет обе функции (обновление sc и reg).Запустите , что вместо sc.

0 голосов
/ 11 мая 2012

В итоге я вызвал себя с правами администратора и специальным параметром myprogram.exe -i, а затем перешел в специальный метод, который использует класс ServiceInstaller для установки программы в качестве службы (вместо вызова sc).

...