Как я могу использовать svchost.exe для размещения своих собственных служб? - PullRequest
1 голос
/ 28 декабря 2011

Я написал сервис на C #. Я хранил библиотеки моего сервиса в папке c: \ windows \ system32 \ myservice.dll. Я сделал необходимые изменения в реестре для хостинга в svchost.exe, но мой сервис не выполняется. Он получает код ошибки 1053.

Ниже приведена запись реестра для myservice. Я создал ключ и указал путь к файлу myservice.dll.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\svcsvc2]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,4c,00,6f,00,63,00,61,00,6c,00,53,00,65,00,72,00,76,00,69,00,63,\
00,65,00,00,00
"DisplayName"="@%SystemRoot%\\system32\\svcsvc.dll,-200"
"ObjectName"="NT AUTHORITY\\LocalService"
"ServiceSidType"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\svcsvc2\Parameter]
"ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\
00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\
73,00,76,00,63,00,73,00,76,00,63,00,2e,00,64,00,6c,00,6c,00,00,00
"ServiceMain"="Main"

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

1053 - это ERROR_SERVICE_REQUEST_TIMEOUT

Служба не ответила на запрос запуска или управления своевременно.

StartServiceCtrlDispatcher не был вызван?

У вас также есть тип, установленный на SERVICE_WIN32_OWN_PROCESS, а не SERVICE_WIN32_SHARE_PROCESS.

И, пожалуйста, уважайте это примечание от MSDN :

Обратите внимание, что Svchost.exe зарезервирован для использования операционной системой и не должен использоваться службами, отличными от Windows.Вместо этого разработчики должны внедрять свои собственные службы хостинга программ.

1 голос
/ 28 декабря 2011

svchost не содержит .NET Framework, поэтому не может выполнить вашу сборку .NET.

.NET-службы работают со своими собственными приложениями (.exe).

0 голосов
/ 28 декабря 2011

Почему бы не создать проект установки в VS, который устанавливает вашу службу?

Если вы не хотите устанавливать службу программно, я бы посоветовал вам прочитать эту статью.

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