我已经用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"
答案 0 :(得分:2)
1053是ERROR_SERVICE_REQUEST_TIMEOUT
该服务未响应a中的启动或控制请求 及时时尚。
未调用StartServiceCtrlDispatcher?
您还可以将类型设置为SERVICE_WIN32_OWN_PROCESS
,而不是SERVICE_WIN32_SHARE_PROCESS
。
请注意,Svchost.exe保留供操作系统使用 不应由非Windows服务使用。相反,开发人员应该 实施自己的服务托管计划。
答案 1 :(得分:1)
svchost不承载.NET框架,因此无法执行.NET程序集。
.NET服务使用自己的应用程序(.exe)运行。
答案 2 :(得分:0)
为什么不在VS中创建安装服务的安装项目?
除非您想以编程方式安装服务,否则我建议您阅读this文章。