c++ 查看系统服务,若服务未启动则启动系统服务

来源:互联网 发布:中北大学宿舍网络 编辑:程序博客网 时间:2024/04/29 13:05

本文实现目标: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

  查看某项服务:

  枚举服务:

0 0