Создание служб запуска Windows через REG или командную строку - PullRequest
1 голос
/ 19 сентября 2011

У меня есть программа на Java, которая должна быть программой запуска, которая запускается от имени администратора. Кажется, что это невозможно сделать, не сделав это услугой. Я пытался использовать HKLM\SYSTEM\CurrentControlSet\Services\Services\MyService. Я попробовал нечто похожее на то, что использует Google Updater (они используют ...\Services\gupdate). Процесс не запускается (или, по крайней мере, сразу останавливается, чего я точно не могу сказать.

Я думаю, что это неправильно с использованием реестра, потому что служба не отображается в msconfig.exe на вкладке Службы. Также он не отображается на панели управления «Просмотр локальных служб» (Windows 7, в меню «Пуск» для поиска «службы»)

Я попробовал гораздо более простой подход, найденный здесь . Я создаю файл .reg с этим содержимым.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService]
"Description"="My Service starts the Special Process."

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters]
"Application"="C:\\Test\\MyProcess.cmd"

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

Есть ли причина, по которой файл .reg не добавляет в msconfig элемент с именем «MyService»?

Программа, которую я написал, написана на Java. У него нет интерфейса с графическим интерфейсом.

Ответы [ 3 ]

2 голосов
/ 19 сентября 2011

Если вы хотите запустить программу с правами администратора, есть другой способ, вместо использования службы.

Вы можете использовать планировщик заданий, например .

Также доступна командная строка: SCHTASKS / create

1 голос
/ 11 июля 2018

Вы можете создать службу, отредактировав реестр, но (как должно быть очевидно) у вас должен быть исполняемый файл службы, связанный со службой .Reg Add позволит добавить эти ключи / значения.

Реестр должен быть перезагружен системой до того, как служба будет распознана, я считаю, что перезагрузка выполняет работу.

  • Добавьте ключ ServiceName к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
  • Затем добавьте следующие значения в клавишу ServiceName:
    • DisplayName - REG_SZ - Sample Service
    • Description - REG_SZ - This Service is the Hello World Service!
    • ErrorControl - REG_DWORD - 1 (decimal)
    • ImagePath - REG_EXPAND_SZ - C:\ProgramData\Program\service_executable.exe
    • ObjectName - REG_SZ - Username_For_Execution (часто LocalSystem)
    • Start - REG_DWORD - 2 (decimal) (зависит от желаемого поведения при запуске)
    • Type - REG_DWORD - 16 (decimal)

Следующие веб-сайты были полезны при расшифровке значения различных значений:

Просто получите root внутри клавиши HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\, чтобы получить больше примеров!

1 голос
/ 19 сентября 2011

Вы не можете создать сервис, манипулируя реестром.Вы также не можете запустить произвольное приложение в качестве службы.

Чтобы запустить произвольную программу из службы, используйте службу srvany.exe, доступную в наборе ресурсов Windows Server 2003 .См. KB137890 для получения инструкций.Если вы хотите написать свой собственный сервис, см. this .

. Чтобы создать сервис, вы можете использовать инструмент командной строки sc или инструмент instsrv.exe из набора ресурсов Windows Server 2003,Или используйте функцию API CreateService Win32.

...