Какой командой можно запустить обычное приложение, как службу Windows?

Как создать, зарегистрировать новую службу Windows из обычного приложения и поставить его в автозагрузку?
У этого приложения будут права администратора?
  • Вопрос задан
  • 483 просмотра
Пригласить эксперта
Ответы на вопрос 3
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Powershell
get-help new-service -examples
CMD
C:\WINDOWS\system32\sc.exe create /?
еще
nssm.cc

Как поставить в автозагрузку сервис? поставить ему автоматический запуск.
Какие права будут у сервиса? такие, какие у учетной записи, под которой вы будете его запускать.
Ответ написан
Комментировать
DarkRaven
@DarkRaven
разработка программного обеспечения
Вообще, можно поступить вот так:

https://gist.github.com/alexkuznetsov/b4880005d73c...

Это регистрация windows-службы из самого приложения. Но, нужно запускать от администратора.
Т.е., отвечая прямо на ваш вопрос:
  • Ваше приложение должно быть windows службой
  • Оно должно содержать в себе установщик (там есть такой компонент)


А затем, можно его установить через
ManagedInstallerClass.InstallHelper(new string[] { "absolute\path\to\assembly.exe" });


UPD: yellowmew указал общий способ, мой относится только к windows-службам, написанным на .NET
Ответ написан
@dude2012
Обычное приложение никак. Если Вы пишете приложение, то в среде разработки, которую Вы используете должен быть тип приложения "Сервис". Должны обрабатываться события и команды (Как минимум Windows должен узнать, что сервис успешно запустился, а не завис).

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

Как правило службы из консоли можно установить запусти с параметром /install
/uninstall соответственно деинсталляция.

Вы можете попробовать запустить приложение через планировщик (можно выбрать когда запустить и от какого имени), добавив туда задание, по сути будет тоже самое, приложение появится в процессах, не будет лишь возможности его остановить/перезапустить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы