为了账号安全,请及时绑定邮箱和手机立即绑定

在没有InstallUtil.exe的情况下安装.NET Windows服务

在没有InstallUtil.exe的情况下安装.NET Windows服务

心有法竹 2019-11-05 10:29:40
我有一个用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进行卸载。但这似乎并不是对您的严格要求。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 627 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信