检查Windows服务运行状态

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
#include <iostream>
#include <tchar.h>
#include <Windows.h>

using namespace std;
/*  检查Windows服务状态信息
    使用API:
    OpenSCManager
    OpenService
    QueryServiceStatusEx
*/
int main(void)
{
    TCHAR szSvcName[]       = _T("HistorySvr");
    SC_HANDLE schSCManager  = NULL;
    SC_HANDLE schService    = NULL;

SERVICE_STATUS_PROCESS ssStatus;
    DWORD dwOldCheckPoint   = ;
    DWORD dwStartTickCount  = ;
    DWORD dwWaitTime        = ;
    DWORD dwBytesNeeded     = ;

// Get a handle to the SCM database.

schSCManager = OpenSCManager(
                       NULL,                                // local computer
                       NULL,                                // ServicesActive database
                       SC_MANAGER_ALL_ACCESS);              // full access rights

if (NULL == schSCManager)
    {
        printf("OpenSCManager failed (%d)\n", GetLastError());

}

// Get a handle to the service.

schService = OpenService(
                     schSCManager,                      // SCM database
                     szSvcName,                         // name of service
                     SERVICE_QUERY_STATUS |
                     SERVICE_ENUMERATE_DEPENDENTS);     // full access

if (schService == NULL)
    {
        printf("OpenService failed (%d)\n", GetLastError());
        CloseServiceHandle(schSCManager);

}

// Check the status in case the service is not stopped.

if (!QueryServiceStatusEx(
                schService,                         // handle to service
                SC_STATUS_PROCESS_INFO,             // information level
                (LPBYTE) &ssStatus,                 // address of structure
                sizeof(SERVICE_STATUS_PROCESS),     // size of structure
                &dwBytesNeeded ) )                  // size needed if buffer is too small
    {
        printf("QueryServiceStatusEx failed (%d)\n", GetLastError());
        CloseServiceHandle(schService);
        CloseServiceHandle(schSCManager);
    }
    else
    {
        // Check if the service is already running. It would be possible
        // to stop the service here, but for simplicity this example just returns.
        printf("Service status: ");
        switch(ssStatus.dwCurrentState)
        {
        case SERVICE_STOPPED:
        case SERVICE_STOP_PENDING:
            printf("Stop");
            break;
        case SERVICE_PAUSED:
        case SERVICE_PAUSE_PENDING:
            printf("Pause");
            break;
        case SERVICE_CONTINUE_PENDING:
        case SERVICE_RUNNING:
        case SERVICE_START_PENDING:
            printf("Running");
            break;
        }
        cout << endl;
    }

cin.get();
    ;
}

  PS:请以管理员权限运行该程序,VS配置如下:

  

  参考:https://msdn.microsoft.com/en-us/library/bb540474(v=VS.85).aspx

C++ 检查Windows服务运行状态的更多相关文章

  1. 基于SignalR实现B/S系统对windows服务运行状态的监测

    通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windows服务肯定是必不可少的,我们还需要利用B/S与windows服务进 ...

  2. SignalR实现B/S系统对windows服务运行状态的监测

    基于SignalR实现B/S系统对windows服务运行状态的监测 通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windo ...

  3. windows服务,安装、启动、停止,配置,一个批处理文件搞定

    相对而言,还是比较通用的吧,如果哪位仁兄有更好的实现方式,或者发现有不足之处,还请多多指教.  @echo off echo.------------------------------------- ...

  4. 第十三篇 一个安装、管理windows服务的桌面程序

    在网上看到一个修改程序入口的程序去把windows 服务修改成控制台的程序,然后利用控制台的程序把服务安装和管理,也想起自己原来也写了一个对windows 报务管理的程序,不过是winform的.   ...

  5. C#通过SC命令和静态公共类来操作Windows服务

    调用的Windows服务应用程序网址:http://www.cnblogs.com/pingming/p/5115304.html 一.引用 二.公共静态类:可以单独放到类库里 using Syste ...

  6. c# 安装windows服务

    C# windows服务: 第一种 :通过cmd命令安装.卸载.启动和停止Windows Service(InstallUtil.exe) 步骤: 1.运行--〉cmd:打开cmd命令框 2.在命令行 ...

  7. 阿里云下 centos7下启动程序总是被killed ,看内存占用情况以检查哪些服务存在问题并调整参数作调优

    很久不搭理自己的网站了,几天突然发现启动程序总是被killed, 于是查看了系统日志 vi /var/log/messages 发现出现 kernel: Out of memory: Kill pro ...

  8. C# windows服务制作(包括安装及卸载)

    开篇语 因工作内容需要做一个windows服务,此前并没有相关经验,所以做了一个demo来跑跑这个梗(高手跳过,需要的来踩)- 效果如下:打开服务,可以找到我们新增的一个windows服务,这个dem ...

  9. 用C#创建Windows服务(Windows Services)

    用C#创建Windows服务(Windows Services) 学习:  第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ...

随机推荐

  1. 算法笔记_164:算法提高 最小方差生成树(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给定带权无向图,求出一颗方差最小的生成树. 输入格式 输入多组测试数据.第一行为N,M,依次是点数和边数.接下来M行,每行三个整数U,V, ...

  2. onWindowFocusChanged重要作用(得到/失去焦点call) 、

    onWindowFocusChanged重要作用 Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onW ...

  3. 【Linux命令】ls命令

    ls命令是Linux最常用的命令,ls命令就是list的缩写,主要作用是:打印出当前目录的清单.如果ls指定其他目录,那么就会显示指定目录下的清单. 1.命令格式 ls [选项] [目录名] 2.命令 ...

  4. JSP简单练习-EL获取表单数据

    输入username和password的界面: <%@ page language="java" contentType="text/html;charset=gb ...

  5. cookie_session的详细用法

    相对路径与绝对路径 相对路径: 链接地址  <a href="list.do"></a> 表单提交地址 <form action="add. ...

  6. Python 使用 UTF-8 编码(转)

    Python 使用 UTF-8 编码(转) 原文出处:http://blog.chenlb.com/2010/01/python-use-utf-8.html 一般我喜欢用 utf-8 编码,在 py ...

  7. Memcached 测试

    Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中. 如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用. 语法: s ...

  8. poj_2773

    题目的愿意非常easy.给你一个n,求在升序排列的情况下,第k个与之相互素的数. 解法:首先我们要知道gcd(b×t+a,b)=gcd(a.b),那么接下来就非常easy了.全部与之互素的数都是以ph ...

  9. HDFS原理解析(整体架构,读写操作流程及源代码查看等)

    前言 HDFS 是一个能够面向大规模数据使用的.可进行扩展的文件存储与传递系统.是一种同意文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间.让实际上是通过网络来訪问文件的 ...

  10. https://github.com/CocoaPods/CocoaPods/search?q=No+such+file+or+directory报错解决方式

    ――― MARKDOWN TEMPLATE ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ### Command ``` /U ...