1:打開SCM管理器函數
SC_HANDLE OpenSCManager(LPCTSTR lpszMachineName,//計算機名稱
LPCTSTR lpszDatabaseName,//scm數據庫名稱
DWORD fdwDesiredAccess); // 使用權限
----Open SCManager 函數打開指定計算機上的service control manager database。其中參數lpszMac
hineName指定計算機名,若爲空則指定爲本機。參數lpszDatabaseName指定要打開的service control m
anager database,默認爲空。
----參數fdwDesiredAccess指定操做的權限,能夠爲下面取值之一
SC_MANAGER_ALL_ACCESS //全部權限
SC_MANAGER_CONNECT //容許鏈接service control manager
SC_MANAGER_CREATE_SERVICE //容許建立服務對象並把它加入service control manager database
SC_MANAGER_ENUMERATE_SERVICE //容許枚舉service control manager database中的服務
SC_MANAGER_LOCK //容許鎖住service control manager database
SC_MANAGER_QUERY_LOCK_STATUS //容許獲取servicecontrolmanagerdatabase的封鎖信息
----函數返回值:函數執行成功則返回一個指向service control manager database的句柄,失敗則返回
NULL。數據庫
2: 關閉服務句柄
BOOL CloseServiceHandle(SC_HANDLE hSCObject)//要關閉的句柄函數
3: 建立服務
SC_HANDLE CreateService(
SC_HANDLE hSCManager, //服務控制管理程序維護的登記數據庫的句柄,由系統函數OpenSCManager 返回
LPCTSTR lpServiceName, //以NULL 結尾的服務名,用於建立登記數據庫中的關鍵字
LPCTSTR lpDisplayName, //以NULL 結尾的服務名,用於用戶界面標識服務
DWORD dwDesiredAccess, //指定服務返回類型
DWORD dwServiceType, //指定服務類型
DWORD dwStartType, //指定什麼時候啓動服務
DWORD dwErrorControl, //指定服務啓動失敗的嚴重程度
LPCTSTR lpBinaryPathName, //指定服務程序二進制文件的路徑
LPCTSTR lpLoadOrderGroup, //指定順序裝入的服務組名
LPDWORD lpdwTagId, //忽略,NULL
LPCTSTR lpDependencies, //指定啓動該服務前必須先啓動的服務或服務組
LPCTSTR lpServiceStartName, //以NULL 結尾的字符串,指定服務賬號。如是NULL,則表示使用LocalSystem賬號
LPCTSTR lpPassword //以NULL 結尾的字符串,指定對應的口令。爲NULL表示無口令。但使用LocalSystem時填NULL
);對象
4: 打開服務
SC_HANDLE OpenService(SC_HANDLE schSCManager,//scm數據庫的句柄
LPCTSTR lpszServiceName,//服務名稱
DWORD fdwDesiredAccess);//訪問權限
----OpenService函數打開指定的Service。
----其中參數schSCManager是指向service control manager database的句柄,由OpenSCManager函數返回。
----參數lpszServiceName要打開的服務的名字,注意大小寫。
----參數fdwDesiredAccess指定操做的權限,能夠爲下面取值之一
SERVICE_ALL_ACCESS //全部權限
SERVICE_CHANGE_CONFIG //容許更改服務的配置
SERVICE_ENUMERATE_DEPENDENTS //容許獲取依賴於該服務的其餘服務
SERVICE_INTERROGATE //容許當即獲取服務狀態
SERVICE_PAUSE_CONTINUE //容許暫停和喚醒服務
SERVICE_QUERY_CONFIG //容許獲取服務配置
SERVICE_QUERY_STATU //容許經過訪問service control manager獲取服務狀態
SERVICE_START //容許啓動服務
SERVICE_STOP //容許中止服務
SERVICE_USER_DEFINE_CONTROL //容許用戶指定特殊的服務控制碼
----函數返回值:函數執行成功則返回指向某項服務的句柄,失敗則返回NULL。ci
5: 控制服務
BOOL ControlService(SC_HANDLE hService,
DWORD dwControl,
LPSERVICE_STATUS lpServiceStatus);
----ControlService函數向Win32service發送控制碼。
----其中參數hService是指向某項服務的句柄,由OpenService函數返回。
----參數dwControl爲控制碼,經常使用的有
SERVICE_CONTROL_STOP //中止服務
SERVICE_CONTROL_PAUSE //暫停服務
SERVICE_CONTROL_CONTINUE //喚醒暫停的服務
SERVICE_CONTROL_INTERROGATE//刷新某服務的狀態
----參數lpServiceStatus指向SERVICE_STATUS結構,用於存放該服務最新的狀態信息。
----函數返回值:函數執行成功則返回True,失敗則返回False。字符串