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。字符串