一、新建 Windows 服務專案
- 開啟 Visual Studio,建立新專案
- 範本選擇:Visual C# → Windows → Windows 服務
- 設定專案名稱、儲存路徑,點選確定
注意:新版 Visual Studio 已不再內建此範本,僅 .NET Framework 支援該範本;.NET Core/.NET 5+ 建議使用
Worker Service。
二、專案結構說明
自動產生核心檔案:
- Program.cs:程式進入點
- Service1.cs:服務主要邏輯類別
1. Program.cs 進入點程式碼
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}Code language: JavaScript (javascript)
作用:啟動服務容器,載入一個或多個服務執行個體。
2. Service1.cs 服務主類別
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
// 【服務啟動時執行】
protected override void OnStart(string[] args)
{
}
// 【服務停止時執行】
protected override void OnStop()
{
}
}
OnStart:服務啟動觸發,商業邏輯寫在此處OnStop:服務停止觸發,用來釋放資源
三、新增安裝程式
此步驟為必要!否則無法註冊至系統服務。
操作步驟
- 在
Service1的設計檢視介面,右鍵 → 新增安裝程式 - Visual Studio 自動產生
ProjectInstaller.cs,包含兩個核心元件:serviceInstaller1serviceProcessInstaller1

元件屬性設定
- serviceInstaller1(服務資訊設定)
ServiceName:內部服務名稱(程式碼識別)DisplayName:服務管理員顯示名稱Description:服務描述StartType:啟動類型Manual(手動)/Automatic(自動)
- serviceProcessInstaller1(執行帳號設定)
Account:執行身分LocalSystem:本機系統帳號(權限最高,建議測試使用)User:指定 Windows 帳號(預設,需填寫帳號密碼)
四、撰寫測試商業邏輯
商業程式撰寫在 Service1 內,你可以將業務邏輯寫在此處。因為服務難以偵錯,我們暫時透過輸出日誌做驗證,服務需要安裝與解除安裝。
修改 Service1.cs
using System.IO;
protected override void OnStart(string[] args)
{
// 啟動寫入日誌
File.AppendAllText("log.txt", "啟動時間:" + DateTime.Now + Environment.NewLine);
}
protected override void OnStop()
{
// 停止寫入日誌
File.AppendAllText("log.txt", "停止時間:" + DateTime.Now + Environment.NewLine);
}Code language: JavaScript (javascript)
五、編譯、安裝、啟動服務
- 編譯專案,取得
WindowsServiceDemo.exe - 使用
InstallUtil.exe註冊服務(系統管理員 CMD)
# 安裝服務
InstallUtil.exe WindowsServiceDemo.exe
# 解除安裝服務
InstallUtil.exe /u WindowsServiceDemo.exeCode language: PHP (php)
- 開啟服務管理員
services.msc,找到對應服務,啟動/停止並檢視日誌。
服務無法像一般程式直接執行偵錯,必須透過工具完成安裝。
注意事項
- 無法直接按 F5 偵錯:Windows 服務不能直接啟動偵錯,建議實作雙模式;命令列執行做為主控台程式,安裝之後做為服務執行。
- 路徑問題:相對路徑會失效,優先使用絕對路徑。
- 權限問題:執行帳號決定磁碟、網路、共用資料夾的存取權限。
- 啟動逾時:
OnStart長時間阻塞會被系統判定啟動失敗,耗時工作建議開新執行緒執行。
第一個 Windows Service
Previous: Windows 服務
Next: 服務的安裝與解除安裝