Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

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

#c_sharp #cmd


Как создать, зарегистрировать новую службу Windows из обычного приложения и поставить
его в автозагрузку?
У этого приложения будут права администратора?
    


Ответы

Ответ 1



Есть программа обертка для таких целей: https://github.com/kohsuke/winsw По сути она просто запустит приложение с нужными параметрами. При остановке службы опять же запустит его, с другими параметрами. Права у приложения будут LOCAL_SYSTEM, но это можно изменить в свойствах службы.

Ответ 2



Можно через консоль, т.е создаешь внутри программы процесс консоли и посылаешь ему что-то типа этого: Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto Служба так же автоматом добавится в автозапуск. Подробнее тут Еще есть Installutil, но если не ошибаюсь, то у него меньше возможностей чем у SC...

Ответ 3



Есть такая программка - XyNtService с исходниками. Я ее допиливал. Здесь исправленная и улучшенная версия (с исходниками). На OneDrive - там два файла: XYNTServiceProject_src.zip и XYNTServiceProject_v03.zip

Ответ 4



Произвольное приложение запустить как службу Windows нельзя, оно должно соответствовать требованиям службы. Можно сделать простую службу, которая будет запускать и контролировать произвольное приложение, указанное в параметрах например. Чтобы не сильно страдать при создании службы, можно воспользоваться, например, TopShelf, который доступен из NuGet, и свести работу к минимуму. Права которые будут у службы настраиваются, и могут быть любыми от системных до пользовательских. При необходимости, права могут быть изменены без переустановки службы, но с обязательным перезапуском.

Комментариев нет:

Отправить комментарий