日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++创建Windows系统服务

發(fā)布時間:2023/12/20 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。