2017-08-16 92 views
0

我在GO中創建了一個可執行文件,並將其作爲Windows服務運行。Windows服務未啓動GO Lang exe文件

我使用golang.org/x/sys/windows/svc包,它提供的執行方法,得到由SCM

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會執行n甚至不會調用我的exe,因爲沒有任何日誌語句被打印。 有沒有人試圖以類似的方式創建一個Windows服務?這是實施還是Windows svc軟件包的問題?

感謝

+0

您的執行函數是否有一個空的正文?如果是這樣,您需要通過'changes'通道向系統發送狀態更新。使用[svc服務示例](https://github.com/golang/sys/tree/master/windows/svc/example)作爲服務的基礎。 –

+0

不,它發送數據到SCM,我的壞,我會添加代碼 – Pharaoh

+0

你可以顯示'main.go'文件,以及如何建立它? – pltvs

回答

0

我已經部署在Program Files文件的GO exe文件,我改變了Windows服務的LogOnAs屬性爲「本地服務」,併爲「本地服務」完整的安裝文件夾中的「文件夾安全性」訪問。

這似乎解決了Windows10的問題。該服務在Windows重新啓動時啓動,但此修補程序仍然不適用於Windows 7和Windows 8。

編輯:

使服務「自動延遲」的作品,但是你必須等待開機後的服務啓動這需要2-3分鐘。

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