Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows 服務初體驗:開機啟動 80+ 服務哪些必開、哪可關?用 VS.NET 建立自訂服務實現定時資料庫備份、Remoting 宿主

編輯:XP 系統應用技巧

Windows XP 開機需啟動 80 多項服務,多數使用者不知其詳,盲目停用導致功能異常,全開又浪費資源。本文帶你「第一次親密接觸」Windows 服務:認識服務本質、分辨必開/可關、實作 VS.NET 建立自訂 Windows Service 實現定時資料庫備份與 .NET Remoting 宿主,從使用者進階為開發者。

什麼是 Windows 服務?

服務 是在背景執行、無使用者介面、支援開機自動啟動、可暫停/繼續/停止、具備安全性內容 的長期運行程式。不同於一般應用程式:
• 無視窗、不佔用工作列。
• 在「服務控制管理器」(SCM) 管控下啟動/停止。
• 可在使用者登入前即運行 (系統帳戶/服務帳戶)。
• 典型用途:事件記錄、列印佇列、Windows Update、資料庫引擎、備份代理、遠端存取…

核心服務:必開 vs 可關參考 (XP/2003 基準,Win7/10/11 服務名稱類似)

原則: 不確定的服務保持「手動」,觀察一段時間無異常再改「停用」。修改前建立系統還原點。

實作:用 Visual Studio .NET 建立 Windows Service (C# 範例)

專案建立步驟

  1. VS.NET →「新增專案」→「Windows Service」範本 → 命名 MyDbBackupService。
  2. 設計檢視 → 從「工具箱」→「元件」拖曳 Timer 到設計面 (非 Windows Forms Timer)。
  3. Timer 屬性:Interval = 200 (毫秒,每秒 5 次觸發,實務建議設 3600000 = 1 小時)。
  4. 雙擊 Timer → 撰寫 Timer_Elapsed 事件處理邏輯:
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    using (SqlConnection conn = new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280"))
    {
        string sql = "INSERT INTO tb1 (col1, col2) VALUES ('111', 11)"; // 實際換成備份/維護邏輯
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
}
  1. 設計檢視右鍵 →「加入安裝程式」→ 產生 ProjectInstaller。
  2. ProjectInstaller 設計檢視 → 設定:
    serviceInstaller1.ServiceName = "MySampleService"
    serviceInstaller1.StartType = ServiceStartMode.Automatic (開機自動啟動)
    serviceProcessInstaller1.Account = ServiceAccount.LocalSystem (最高權限,或 User/NetworkService)
  3. 建置專案 → 輸出 MyDbBackupService.exe 至 bin\Debug\ 或 bin\Release\。
  4. 以系統管理員開啟命令提示字元 → 切換至輸出目錄 → 執行:
    InstallUtil MyDbBackupService.exe (註冊服務)。
    InstallUtil /u MyDbBackupService.exe (移除服務)。
  5. 右鍵「我的電腦」→「管理」→「服務與應用程式」→「服務」→ 找 MySampleService → 右鍵「啟動」。

進階應用:.NET Remoting 宿主於 Windows Service

將 Remoting 伺服器物件 (WellKnown/Client-Activated) 寄宿於 Windows Service,服務啟動時註冊通道 (TcpChannel/HttpChannel) 與物件,客戶端即可透過 Activator.GetObject 遠端呼叫,無需 IIS/ASP.NET,輕量級分散式架構雛形。

服務管理實用工具

  • services.msc:圖形介面管理。
  • sc query / sc start / sc stop / sc config:命令列管理,適合腳本自動化。
  • tasklist /svc (XP/2003) / tasklist /svc /fi "imagename eq svchost.exe":查看 svchost.exe 承載哪些服務。
  • Sysinternals Autoruns / Process Explorer:深度分析啟動項、服務、DLL 載入。

Windows 服務是系統骨幹,亦是開發者利器。認清哪些必開、哪些可關,善用 VS.NET 建立自訂服務,讓定時備份、Remoting 宿主、長期監控等任務在背景穩定運行,不再佔用桌面、不怕使用者誤關,真正實現「設定好就忘記它」的自動化境界!

Copyright © Windows教程網 All Rights Reserved
服務名稱顯示名稱建議說明
EventLog事件記錄必開系統/應用/安全日誌核心
PlugPlay即插即用管理必開硬體偵測與驅動載入
RpcSs遠端程序呼叫 (RPC)必開COM/DCOM/系統核心通訊基礎
LanmanWorkstation工作站必開網路連線、檔案共享用戶端
LanmanServer伺服器視需求提供檔案/列印共享 (不共享可關)
Themes主題視需求視覺樣式 (關閉省資源、經典外觀)
AudioSrvWindows Audio視需求聲音 (無聲音需求可關)
WZCSVC無線網路設定視需求無線網卡管理 (桌機可關)
wuauserv自動更新建議開安全性修補關鍵
ERSvc錯誤報告服務可關傳送錯誤報告給微軟
ImapiServiceCD 燒錄 COM 服務可關不燒錄可關
RemoteRegistry遠端登錄檔建議關允許遠端修改登錄檔,高風險
SSDPSRVSSDP 發現服務可關UPnP 裝置發現
MessengerMessenger建議關接收網路彈窗垃圾 (XP/2003)