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。
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。