CNTService 封裝了 Windows 服務 API,提供比裸 API 更高層的抽象:
-i、卸載 -u、版本 -v、調試 -d)。OnInit、Run、OnUserControl。main 函數極簡實現
服務安裝與卸載
CNTService::Install:調用 CreateService 向 SCM 註冊,在 HKLM\SYSTEM\CurrentControlSet\Services\ 創建鍵,並註冊事件日誌來源。CNTService::Uninstall:調用 DeleteService 移除 SCM 註冊,不刪除可執行文件。OnInit)2. 工作循環 (
Run)BOOL CMyService::OnUserControl(DWORD dwOpcode) { switch (dwOpcode) { case 128: // 自定義:重置狀態 m_iState = m_iStartParam; SaveStatus(); return TRUE; case 129: // 自定義:導出當前狀態 // 可寫文件或發送事件 return TRUE; } return FALSE; // 未處理 }客戶端調用
ControlService(hService, 128, &ss)發送自定義碼。狀態持久化 (
SaveStatus)調試技巧
main 中取消註釋 DebugBreak(),服務啟動時自動進入調試器。StartServiceCtrlDispatcher 直接以控制台模式運行(需修改 CNTService 支持)。