我已经在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甚至不会调用my,因为没有一个日志语句被打印出来。是否有人尝试过以类似的方式创建windows服务?这是实现问题还是windows svc包的问题?
发布于 2017-08-23 10:59:39
我在Program中部署了GO exe,我将Windows服务的LogOnAs属性更改为"Local“,并给予"Local”对“文件夹安全”中的安装文件夹的完全访问权限。
这似乎解决了windows10的问题。服务在windows重新启动时启动,但此修复仍然不适用于windows 7和windows8。
编辑:
使服务“自动延迟”工作,然而,您必须等待服务启动后,这需要2-3分钟。
https://stackoverflow.com/questions/45713666
复制相似问题