пятница, 24 ноября 2017 г.

Запуск программы как службы Windows

Для выполнения этой операции нам понадобятся две утилиты: srvany.exe и instsrv.exe, входящие в состав Windows Server 2003 Resource Kit Tools.
Скачиваем и устанавливаем Windows Server 2003 Resource Kit Tools.
При установке под Windows 7 может появиться предупреждение о несовместимости — игнорируем его.
Предположим, что в качестве службы нам нужно запустить некий исполняемый файл — program.exe, расположенный в C:\Program Files\Program.
Из директории установки Resource Kit Tools (обычно C:\Program Files\Windows Resource Kits\Tools) копируем srvany.exe и instsrv.exe в папку где расположен наш program.exe(C:\Program Files\Program).
В этой же папке создаем текстовый файл program.reg со следующим содержанием:
1Windows Registry Editor Version 5.00
2 
3[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ProgramService\Parameters]
4"Application"="c:\\Program Files\\Program\\program.exe"
5"AppDirectory"="c:\\Program Files\\Program\\"
Обратите внимание на двойной слэш в путях — это не опечатка, так должно быть. ProgramService — это имя службы. Вы можете выбрать любое, главное, чтобы оно не совпадало с уже существующими.
Теперь открываем командную строку. В Vista и Windows 7 командная строка должна быть обязательно запущена от имени администратора (правый клик на ярлыке командной строки, выбрать пункт «Запуск от имени администратора»). В командной строке выполняем:
1c:
2cd \
3cd "program files\program"
4instsrv ProgramService "c:\program files\program\srvany.exe"
В результате вы должны получить ответ: The service was successfuly added (служба успешно добавлена). Если же вы получили сообщение: You are not authorized to do this — please contact your system administrator — скорее всего, командная строка запущена как обычно, а не от имени администратора.
Далее двойной щелчок по ранее созданному файлу program.reg, запрос на внесение изменений в реестр подтверждаем.
На этом все. Осталось перезагрузиться и проверить работоспособность службы.
Удаление службы.
Вариант 1. Остановить службу, затем вручную удалить ключи реестра и файлы.
Вариант 2. Остановить службу, в командной строке выполнить:
1c:
2cd \
3cd "program files\program"
4instsrv ProgramService remove
Это не универсальный вариант, он работает только со службами установленными с помощью instsrv.