4

Запуск программы как службы 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 со следующим содержанием:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ProgramService\Parameters]
"Application"="c:\\Program Files\\Program\\program.exe"
"AppDirectory"="c:\\Program Files\\Program\\"

Обратите внимание на двойной слэш в путях — это не опечатка, так должно быть. ProgramService — это имя службы. Вы можете выбрать любое, главное, чтобы оно не совпадало с уже существующими.

Теперь открываем командную строку. В Vista и Windows 7 командная строка должна быть обязательно запущена от имени администратора (правый клик на ярлыке командной строки, выбрать пункт «Запуск от имени администратора»). В командной строке выполняем:

c:
cd \
cd "program files\program"
instsrv 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. Остановить службу, в командной строке выполнить:

c:
cd \
cd "program files\program"
instsrv ProgramService remove

Это не универсальный вариант, он работает только со службами установленными с помощью instsrv.