有时可能需要手动修改系统服务或者我们自己写的服务的启动类型,并手动将服务启动起来,这些手动操作均可以通过代码实现。比如代码中要执行打印的操作时,我们需要检测系统的打印服务有没有开启,如果没开启则去开启。
要实现这样的操作,需要用到下列函数:OpenSCManager、OpenService、ChangeServiceConfig、StartService、CloseServiceHandle,函数的具体说明和用法查看MSDN即可。对于下图,注意调用API函数时,要使用服务名称,不能使用显示名称。
下面给出将服务设置为自动启动,并将服务启动起来的完整代码:
BOOL ChangeServiceStartTypeAndStart( CString strSvrName )
{
SC_HANDLE schSCManager;
SC_HANDLE schService;
// Get a handle to the SCM database.