Проблема:
Необходимо запускать произвольное приложение как службу (сервис).
Решение:
Способ первый:
Воспользуемся утилитами от Microsoft:
они входят в состав Resource Kit, например Windows NT Resource Kit Support Tools или Windows 2003 Server Resource Kit Tools
Далее:
-
Распаковываем архивы с файлами InstSrv.exe и SrvAny.exe в системную папку Windows: %windir%\system32
-
Выполняем команду:
Код: Выделить всё
%windir%\system32\InstSrv.exe Моя_служба %windir%\system32\SrvAny.exe
здесь "Моя_служба" - произвольное имя для новой службы
Пример:Код: Выделить всё
C:\Program Files\Resource Kit\Instsrv.exe Notepad C:\Program Files\Resource Kit\Srvany.exe
Если всё сделано правильно, то появится сообщение, подтверждающее успешное создание сервиса (The service was successfuly added)
Для проверки правильности создания службы убедитесь, что параметр ImagePath в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Моя_служба указывает на SrvAny.exe. Если этот параметр установлен неправильно, служба прекращает работу вскоре после запуска и возвращает код события 7000 — «Не удается запустить Моя_служба».
-
В реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Моя_служба создаем раздел Paremeters
-
В этом разделе создаем строковый параметр Application (тип REG_SZ) со значением "<путь>\<application.ext>"
где <путь>\<application.ext> — это буква диска и полный путь к исполняемому файлу приложения, включая расширение (например C:\WinNT\Notepad.exe)
По-умолчанию вновь созданная служба настроена на автоматический запуск при перезагрузке системы. Для изменения этого режима на «Вручную», необходимо запустить приложение «Службы» из панели управления и изменить значение параметра на «Вручную».
Для работы созданного сервиса в отдельном окне необходимо отметить на второй вкладке (Вход в систему) пункт Allow Service to Interact with Desktop (Разрешить взаимодействие с рабочим столом).
Запустить сервис, если он не отключен, можно несколькими способами:
Во-первых - через командную строку:
Код: Выделить всё
Net Start Моя_служба
где Моя_служба - имя службы, заданное на шаге 1.
Во-вторых - непосредственно через апплет административной панели - службы (servisec.msc).
Чтобы удалить сервис:
-
Останавливаем сервис:
Код: Выделить всё
net stop Моя_служба
-
Удаляем сервис:
Код: Выделить всё
InstSrv Моя_служба remove
Способ второй
Качаем утилиту "SrvInstw.exe"
Зеркало
и, в графическом интерфейсе, где все понятно и без подсказок, выполняем все шаги.