2017-08-16 19 views
0

GOで実行可能ファイルを作成しましたが、Windowsサービスとして実行しています。Windowsサービスが起動していませんGO Lang exe

私はパッケージを使用してgolang.org/x/sys/windows/svc、および

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} 


} 

サービスは、ほとんどの時間が、問題の作品SCMによって呼び出されるExecuteメソッドでそれを提供していますシステムを再起動するたびにエラー1053が表示されます。「サービスが開始または制御要求にタイムリーに応答しない」というエラーが発生し、起動しない。

実行時にログステートメントを追加した後Executeメソッドを使用すると、サービスがエラーなく開始されるとログが出力されることがわかりましたが、サービスで1053エラーが発生した場合、SCMはn私のexeを呼び出すことさえありません。なぜなら、ログステートメントのどれもは印刷されないからです。 誰もWindowsサービスの作成を試みたことがありますか?実装やWindowsのsvcパッケージに問題はありますか?

おかげ

+0

Execute関数に空のボディがありますか?もしそうなら、 'changes'チャンネルを介してシステムに状態更新を送る必要があります。サービスのベースとして[svc service example](https://github.com/golang/sys/tree/master/windows/svc/example)を使用してください。 –

+0

いいえ、それはSCMにデータを送信します、私の悪い、私はそのコードを追加します – Pharaoh

+0

'main.go'ファイルとそれをどのように構築することができますか? – pltvs

答えて

0

私はプログラムファイルに展開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

関連する問題