windows服務監控和操作相關

來源:互聯網
上載者:User

標籤:服務

代碼中實現了刪除服務,啟動服務,停止服務,檢測服務是否運行和服務是否存在等功能:


#pragma  once#include <Windows.h>#include <tchar.h>//刪除服務/*返回:1:表示成功0:開啟失敗-1:表示開啟SCManager失敗*/int deleteService(LPCWSTR sSname){SC_HANDLE scHandle = OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);SC_HANDLE hsev = NULL;if(scHandle != NULL){hsev = OpenService(scHandle,sSname,SERVICE_ALL_ACCESS);SERVICE_STATUS mss;if(hsev != NULL){QueryServiceStatus(hsev,&mss);if (mss.dwCurrentState != SERVICE_RUNNING){ControlService(hsev,SERVICE_CONTROL_STOP,&mss);DeleteService(hsev);}CloseServiceHandle(hsev);} else {CloseServiceHandle(scHandle);return 0;}CloseServiceHandle(scHandle);}elsereturn -1;return 1;}//啟動KH用戶端服務void startService(LPCWSTR sSname){SC_HANDLE scHandle = OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);SC_HANDLE hscv = NULL;if (scHandle != NULL){hscv = OpenService(scHandle,sSname,SERVICE_START);if(hscv != NULL){BOOL isSucess = StartService(hscv,0,NULL);DWORD err = 0;if (isSucess  == 0){err = GetLastError();}CloseServiceHandle(hscv);}CloseServiceHandle(scHandle);}}//停止KH用戶端服務void stopService(LPCWSTR sSname){SC_HANDLE scHandle = OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);SC_HANDLE hsev = NULL;if(scHandle != NULL){hsev = OpenService(scHandle,sSname,SERVICE_ALL_ACCESS);SERVICE_STATUS mss;if(hsev != NULL){QueryServiceStatus(hsev,&mss);if (mss.dwCurrentState == SERVICE_RUNNING){ControlService(hsev,SERVICE_CONTROL_STOP,&mss);CloseServiceHandle(hsev);}}CloseServiceHandle(scHandle);}}BOOL isSvsRuning(LPCWSTR sSname){BOOL  ret = FALSE;SC_HANDLE scHandle = OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);SC_HANDLE hsev = NULL;if(scHandle != NULL){hsev = OpenService(scHandle,sSname,SERVICE_ALL_ACCESS);SERVICE_STATUS mss;if(hsev != NULL){QueryServiceStatus(hsev,&mss);if (mss.dwCurrentState == SERVICE_RUNNING){ret = TRUE;CloseServiceHandle(hsev);}}CloseServiceHandle(scHandle);}return ret;}BOOL isSvsExist(LPCWSTR sSname){BOOL ret = FALSE;SC_HANDLE scHandle = OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);SC_HANDLE hsev = NULL;if(scHandle != NULL){hsev = OpenService(scHandle,sSname,SERVICE_ALL_ACCESS);DWORD err = GetLastError();if (err == ERROR_SERVICE_DOES_NOT_EXIST){ret = FALSE;}else{ret = TRUE;}if(hsev != NULL){CloseServiceHandle(hsev);CloseServiceHandle(scHandle);}}return ret;}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

windows服務監控和操作相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.