C++创建Windows系统服务
生活随笔
收集整理的這篇文章主要介紹了
C++创建Windows系统服务
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
定義
? ? Microsoft Windows 服務(wù)(即,以前的 NT 服務(wù))使您能夠創(chuàng)建在它們自己的 Windows 會話中可長時間運行的可執(zhí)行應(yīng)用程序。這些服務(wù)可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這種服務(wù)非常適合在服務(wù)器上使用,或任何時候,為了不影響在同一臺計算機上工作的其他用戶,需要長時間運行功能時使用。還可以在不同于登錄用戶的特定用戶帳戶或默認(rèn)計算機帳戶的安全上下文中運行服務(wù)。
相關(guān)API
OpenSCManager():打開服務(wù)控制管理器。
CreateService():創(chuàng)建系統(tǒng)服務(wù)。
OpenService():打開服務(wù)。
StartService():啟動服務(wù)。
StopService():停止服務(wù)。
ControlService():控制服務(wù)。
SetServiceStatus():設(shè)置服務(wù)狀態(tài)。
代碼實例
#include <Windows.h>//獲取當(dāng)前exe程序所在路徑 char *GetExeFullPath() {char *path = new char[1024];memset(path, 0, 1024);if (GetModuleFileName(NULL, path, 1024) != 0){return NULL;}return path; }//測試創(chuàng)建、啟動系統(tǒng)服務(wù) bool TestStartService() {//打開服務(wù)控制管理器SC_HANDLE hScm = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);if (hScm == NULL){return false;}//創(chuàng)建系統(tǒng)服務(wù),參數(shù)很多,可查看幫助文檔SC_HANDLE hService = CreateService(hScm, "MySerivce", "MyService", SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, GetExeFullPath(), NULL, NULL, "", NULL, "");if (hService == NULL){return false;}//啟動系統(tǒng)服務(wù)if (StartService(hService, 0, NULL) == false){return false;}//釋放句柄CloseServiceHandle(hScm);CloseServiceHandle(hService);return true; }//測試停止、卸載系統(tǒng)服務(wù) bool TestStopService() {//獲取系統(tǒng)服務(wù)控制管理器句柄SC_HANDLE hScm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);if (hScm == NULL){return false;}//打開系統(tǒng)服務(wù),獲取服務(wù)句柄SC_HANDLE hService = OpenService(hScm, "MyService", SERVICE_ALL_ACCESS);if (hService == NULL){return false;}//查詢該系統(tǒng)服務(wù)是否正在運行,若在運行中則停止該服務(wù)SERVICE_STATUS status;QueryServiceStatus(hService, &status);if (status.dwCurrentState == SERVICE_RUNNING){ControlService(hService, SERVICE_CONTROL_STOP, &status);//如果出錯,則返回falseif (status.dwCurrentState != NO_ERROR){return false;}}//如果服務(wù)狀態(tài)為已停止,則卸載該系統(tǒng)服務(wù)if (status.dwCurrentState == SERVICE_STOPPED){DeleteService(hService);}//釋放句柄CloseServiceHandle(hScm);CloseServiceHandle(hService); }int main() {TestStartService();//TestStopService();return 0; } 該程序主要實現(xiàn)了系統(tǒng)服務(wù)的創(chuàng)建、啟動、停止、卸載等功能。 成功創(chuàng)建系統(tǒng)服務(wù)后,可以打開Windows系統(tǒng)中的SCM(服務(wù)控制管理器)進行查看。按住Ctrl+R打開運行窗口->輸入“services.msc”打開服務(wù)窗口->在右側(cè)服務(wù)列表中查找MyService名稱的系統(tǒng)服務(wù)。總結(jié)
以上是生活随笔為你收集整理的C++创建Windows系统服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5i标签设置颜色,HTML 5
- 下一篇: c++项目——聊天室——第一节