隱身術之Windows背景執行

利用nssm來把執行檔包成windows服務


寫了一個簡單的靜態httpServer

可是執行時桌面一直卡著執行的畫面...

google了一下 發現一個超好用的工具nssm,簡單來說nssm做的事情就是將你的執行檔註冊成Service

下載 v2.24

註冊服務:

解壓縮以後將nssm.exe丟到你的執行資料夾中,shift+滑鼠右鍵選取在此處開啟命令視窗。

註冊指令

.\nssm.exe install MyHttpService

服務啟動指令(或是重開機)

註冊完並不會自動啟動,需要重開機或是手動啟動(只有第一次需要)
.\nssm.exe start MyHttpService 

利用工作管理員檢查服務的執行狀態

移除註冊服務

刪完以後記得要重開機
.\nssm.exe remove MyHttpService

確認是否要刪除此服務

 

 

細部的指令說明可以參考官網

超簡易程式碼by golang

package main

import (
	"flag"
	"fmt"
	"net/http"
	"path/filepath"
)

func main() {
	port := flag.String("port", "80", "port to serve on")
	path := flag.String("path", ".", "the directory of static file to host")
	flag.Parse()
	absPath, err := filepath.Abs(*path)
	if err != nil {
		fmt.Println("file path formate error!")
		return
	}

	fs := http.FileServer(http.Dir(absPath))
	http.Handle("/", http.StripPrefix("", fs))
	fmt.Println("Use -help for more information!")
	fmt.Printf("Server Port: %v\n", *port)
	fmt.Printf("Server Path: %v", absPath)
	http.ListenAndServe(":"+*port, nil)
}