我正在使用该golang.org/x/sys/windows/svc
包在 Go 中编写 Windows 服务。
到目前为止,一切都很好,而且很容易上手,我喜欢它。
我已经编写了一些自动更新功能,我希望服务在完成更新后自行重新启动。
我尝试生成一个进程,该进程将使用 重新启动服务SCM
,但它记录了一条错误消息,这似乎与在作为本地系统运行时尝试控制服务有关。
The service process could not connect to the service controller.
更好/更简单的方法似乎是os.Exit(1)
将服务Failure Actions
设置为Restart on Failure
,这非常有效!
唯一的问题是,似乎没有使用 Go 以编程方式配置这些选项的功能。
我已经做了一些挖掘,看起来它们是通过将结构传递给ChangeServiceConfig2
in来配置的advapi32.dll
-如何创建在崩溃时重新启动的服务
在golang/sys/blob/master/windows/svc/mgr/config.go -func updateDescription(handle windows.Handle, desc string) error
代码已经调用windows.ChangeServiceConfig2
,它是指向 DLL 调用的链接。
SERVICE_FAILURE_ACTIONS
结构的 Microsoft 文档在这里。
我无法弄清楚如何使用 Go 构建和传递该结构 - 有没有人有任何见解?
眼眸繁星
相关分类