繁体   English   中英

如何使用svchost.exe托管我自己的服务?

[英]how can i use svchost.exe to host my own services?

我已经用C#编写了服务。 我将服务的DLL保留在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"

1053是ERROR_SERVICE_REQUEST_TIMEOUT

该服务未及时响应启动或控制请求。

没有调用StartServiceCtrlDispatcher?

您还将类型设置为SERVICE_WIN32_OWN_PROCESS ,而不是SERVICE_WIN32_SHARE_PROCESS

请尊重MSDN上的这个说明

请注意,Svchost.exe保留供操作系统使用,而不应由非Windows服务使用。 相反,开发人员应该实现自己的服务托管程序。

svchost不承载.NET框架,因此无法执行.NET程序集。

.NET服务使用自己的应用程序(.exe)运行。

为什么不在VS中创建安装服务的安装项目?

除非你想以编程方式安装一个服务,我会建议你阅读文章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM