服务未在Windows中启动

问题描述 投票:1回答:1

我在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:“该服务没有及时响应启动或控制请求”错误,并且无法启动,

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

go windows-services
1个回答
0
投票

我已在程序文件中部署了GO exe,我将Windows服务的LogOnAs属性更改为“本地服务”,并授予“本地服务”对“文件夹安全性”中安装文件夹的完全访问权限。

这似乎可以解决Windows10的问题。该服务在Windows重新启动时启动,但是此修复程序仍不适用于Windows 7和Windows8。

编辑:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.