我有一个用C#编写的标准.NET Windows服务。是否可以在不使用InstallUtil的情况下自行安装?我应该使用服务安装程序类吗?我应该如何使用它?我希望能够拨打以下电话:MyService.exe -install它与调用具有相同的效果:InstallUtil MyService.exe
3 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
尽管涉及的工作量是不平凡的,但您总是可以退回到旧的WinAPI调用中。不需要通过支持.NET的机制来安装.NET服务。
安装:
通过打开服务管理器
OpenSCManager
。致电
CreateService
注册服务。(可选)调用
ChangeServiceConfig2
以设置描述。关闭服务,并使用来关闭服务管理器句柄
CloseServiceHandle
。
卸载:
通过打开服务管理器
OpenSCManager
。使用打开服务
OpenService
。通过调用
DeleteService
返回的句柄来删除服务OpenService
。关闭服务,并使用来关闭服务管理器句柄
CloseServiceHandle
。
与使用ServiceInstaller
/相比ServiceProcessInstaller
,我更喜欢这样做的主要原因是您可以使用自己的自定义命令行参数注册服务。例如,您可以将其注册为"MyApp.exe -service"
,然后如果用户在没有任何参数的情况下运行您的应用,则可以为他们提供一个UI以安装/删除该服务。
运行Reflector ServiceInstaller
可以填写此简要说明中缺少的详细信息。
PS显然,这不会具有与调用:InstallUtil MyService.exe相同的效果-特别是,您将无法使用InstallUtil进行卸载。但这似乎并不是对您的严格要求。
- 3 回答
- 0 关注
- 627 浏览
添加回答
举报
0/150
提交
取消