Windows服务无法启动GO Lang exe

时间:2017-08-16 12:33:16

标签: go windows-services

我在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包的问题?

由于

1 个答案:

答案 0 :(得分:0)

我在程序文件中部署了GO exe,我将Windows服务的LogOnAs属性更改为&#34;本地服务&#34;并给予了#34;本地服务&#34;完全访问&#34;文件夹安全性&#34;中的安装文件夹。

这似乎解决了windows10的问题。该服务在Windows重启时启动,但此修复仍不适用于Windows 7和Windows8。

编辑:

提供服务&#34;自动延迟&#34;但是你需要等待服务启动后启动,这需要2-3分钟。

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