雖然寫的大部分程序是在 freebsd 和 linux 下面的。但是,最近還是遇到了一個windows 下面的問題,那就是如何讓一個 用Go語言寫的服務器,在windows 下面開機的時候不登錄就自動啟動。
所以,不能設置成在run里面啟動。把服務器組成成一個window的服務比較靠譜。但是,當初設計的時候,程序是在linux運行的,后來因為某些原因才搬到windows上,寫的時候根本沒有考慮弄成window 服務。
下面是基本的步驟:
1. 准備好 instsrv.exe srvany.exe, 這兩個文件在附件中下載。
instsrv.exe 是注冊服務用的, 使用方法如下:
usage: instsrv <service name> <exe location> to install a service,
or: instsrv <service name> remove to remove a service
當然也可以采用 sc 命令來操作服務
2. 注冊一個 srvany.exe的服務
instsrv MyService location/to/srvany.exe
3. 修改注冊表 : 把真正的服務的可執行文件放到注冊表里面去
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MyService\Parameters]
"Application"="D:\\go\\tester\\src\\signalserver\\server\\signalserver.exe"
"AppDirectory"="D:\\go\\tester\\src\\signalserver\\server"
"AppParameters"=""
也可以手工在注冊表里面修改,或者把上面信息保存成exe
MyService 是服務名稱
Application 服務可執行文件路徑
AppDirectory 服務執行的目錄
AppParameters 參數信息,可以為空