本文实现目标:c++ 启动系统服务
思路:先打开系统服务,检查系统服务状态,如果服务处于停止状态,则将其状态设置为启动。
// Temp.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <atlstr.h >
#include <shellapi.h>
int _tmain(int argc, _TCHAR* argv[])
{
SERVICE_STATUS status;
SC_HANDLE schSCManager;
SC_HANDLE schService;
// 打开服务控制管理数据库,并返回服务控制管理数据库的句柄
schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (schSCManager == NULL)
{
MessageBox(NULL, _T("打开系统服务控制器失败!"), _T("错误"), NULL);
return FALSE;
}
// 获得服务句柄
schService = OpenService(schSCManager, _T("GameManagerServer"), SERVICE_ALL_ACCESS | DELETE);
if (schService == NULL)
{
return FALSE;
}
// 获得服务的当前状态
QueryServiceStatus(schService, &status);
// 如果服务处于停止状态,则将其状态设置为启动
if (status.dwCurrentState = SERVICE_STOPPED)
//启动服务
StartService(schService, 0, NULL);
// 关闭服务句柄
CloseServiceHandle(schSCManager);
CloseServiceHandle(schService);
return 0;
}
c++ 对系统服务的操作扩展:
创建服务:可手动通过批处理命令,然后进注册表修改一下(后面会介绍),可以自己写进c++小软件
卸载服务:可用批处理命令 instsrv ServiceName remove ,也可以借用SRVINSTW.EXE(网上可下)
启动服务:如上方法,也可以用批处理 sc start XXX
查看某项服务:
枚举服务: