gpt4 book ai didi

go - 服务未在 Windows 中启动

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:30 36 4
gpt4 key购买 nike

我已经在 Go 中创建了一个可执行文件,并将其作为 Windows 服务运行。

我正在使用 golang.org/x/sys/windows/svc 包,并为其提供由 SCM 调用的 Execute 方法

run := svc.Run
_ = run(svcName, &myservice{})

func (m *myservice) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) {

changes <- svc.Status{State: svc.StartPending}

go mainmethod()

changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}


}

该服务大部分时间都在工作,但问题是每当我重新启动系统时,该服务都会给我一个错误 1053:“服务没有及时响应启动或控制请求”错误并且不会启动,

在我的 run 和 Execute 方法中添加日志语句后,我发现当服务启动时没有错误会打印日志,但是当服务给出 1053 错误时,SCM 甚至不会调用我的 exe,因为没有打印日志语句。有没有人尝试过以类似的方式创建 Windows 服务?是实现的问题还是windows svc包的问题?

最佳答案

我在 Program Files 中部署了 GO exe,我将 Windows Service 的 LogOnAs 属性更改为“Local Service”,并在“Folder Security”中赋予“Local Service”对安装文件夹的完全访问权限。

这似乎解决了 windows10 的问题。该服务在 windows 重新启动时启动,但此修复程序仍然不适用于 windows 7 和 windows8。

编辑:

使服务“自动延迟”有效,但是您必须在启动后等待服务启动,这需要 2-3 分钟。

这里提到的答案有帮助:https://serverfault.com/questions/697608/automatic-windows-service-not-starting/697852#697852?newreg=788f7ab0bb084fec85d1ce2e51bf8317

关于go - 服务未在 Windows 中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45713666/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com