我在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:&#34;服务没有及时响应启动或控制请求&#34;错误并且无法启动,
在我的run和Execute方法中添加日志语句之后,我发现当服务启动而没有错误时会打印日志,但是当服务发出1053错误时,SCM甚至不会调用我的exe,因为没有日志语句打印出来。 有没有人尝试以类似的方式创建Windows服务?是实现还是windows svc包的问题?
由于
答案 0 :(得分:0)
我在程序文件中部署了GO exe,我将Windows服务的LogOnAs属性更改为&#34;本地服务&#34;并给予了#34;本地服务&#34;完全访问&#34;文件夹安全性&#34;中的安装文件夹。
这似乎解决了windows10的问题。该服务在Windows重启时启动,但此修复仍不适用于Windows 7和Windows8。
编辑:
提供服务&#34;自动延迟&#34;但是你需要等待服务启动后启动,这需要2-3分钟。