• 大小: 345KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: C++  window  系统服务  

资源简介

用C++编写的,利用调用操作系统提供的API获取操作系统的服务详细信息。

资源截图

代码片段和文件信息

// GetSysService.cpp : Defines the entry point for the console application.
//

#include “StdAfx.h“
#include 
#include 
#include
void main()
{
printf(“输入1查看系统服务状况!\n“);
int menu = 0;
while (cin >> menu)
{
if(menu == 1)
{
SC_HANDLE SCMan = OpenSCManager(NULL NULL SC_MANAGER_ALL_ACCESS); //打开系统服务控制器
if(SCMan == NULL)
{
printf(“OpenSCManager Eorror\n“);
return;
}
LPENUM_SERVICE_STATUS service_status; //保存系统服务的结构
DWORD cbBytesNeeded = NULL; 
DWORD ServicesReturned = NULL;
DWORD ResumeHandle = NULL;

service_status = (LPENUM_SERVICE_STATUS)LocalAlloc(LPTR 1024 * 64);//分配内存,注意大小


//获取系统服务的简单信息
bool ESS = EnumServicesStatus(SCMan //系统服务句柄
SERVICE_WIN32 //服务的类型
SERVICE_STATE_ALL  //服务的状态
(LPENUM_SERVICE_STATUS)service_status  //输出参数,系统服务的结构
1024 * 64  // 结构的大小
&cbBytesNeeded //输出参数,接收返回所需的服务
&ServicesReturned //输出参数,接收返回服务的数量
&ResumeHandle); //输入输出参数,第一次调用必须为0,返回为0代表成功
if(ESS == NULL) 
{
printf(“EnumServicesStatus Eorror\n“);
return;
}
printf(“当前服务数量为:%d\n“ServicesReturned);
for(int i = 0; i < ServicesReturned; i++)
{
printf(“服务名: %s “ service_status[i].lpDisplayName);
switch(service_status[i].ServiceStatus.dwCurrentState)// 服务状态
{
case SERVICE_CONTINUE_PENDING:
printf(“状态: 挂起“);
break;
case SERVICE_PAUSE_PENDING:
printf(“状态: 正在暂停 “);
break;
case SERVICE_PAUSED:
printf(“状态: 已暂停 “);
break;
case SERVICE_RUNNING:
printf(“状态: 运行 “);
break;
case SERVICE_START_PENDING:
printf(“状态: 启动 “);
break;
case SERVICE_STOPPED:
printf(“状态: 停止 “);
break;
default:
printf(“状态: 未知 “);
break;
}
LPQUERY_SERVICE_CONFIG lpServiceConfig = NULL; //服务详细信息结构
SC_HANDLE service_curren = NULL; //当前的服务句柄
service_curren = OpenService(SCMan service_status[i].lpServiceName SERVICE_QUERY_CONFIG); //打开当前服务
lpServiceConfig = (LPQUERY_SERVICE_CONFIG)LocalAlloc(LPTR 8 * 1024);      //分配内存, 最大为8kb 

if(NULL == QueryServiceConfig(service_curren lpServiceConfig 8 * 1024 &ResumeHandle))
{
printf(“QueryServiceConfig Error\n“);
return;
}
printf(“路径: %s “ lpServiceConfig->lpBinaryPathName);//服务的路径
printf(“\n“);
CloseServiceHandle(service_curren);//关闭当前服务的句柄
}
CloseServiceHandle(SCMan);//关闭服务管理器的句柄
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     213049  2012-04-01 14:36  GetSysService\Debug\GetSysService.exe

     文件     260312  2012-04-01 14:36  GetSysService\Debug\GetSysService.ilk

     文件      66728  2012-04-01 14:36  GetSysService\Debug\GetSysService.obj

     文件     187144  2012-04-01 14:11  GetSysService\Debug\GetSysService.pch

     文件     541696  2012-04-01 14:36  GetSysService\Debug\GetSysService.pdb

     文件       1764  2012-04-01 14:11  GetSysService\Debug\StdAfx.obj

     文件     181248  2012-04-01 14:36  GetSysService\Debug\vc60.idb

     文件     307200  2012-04-01 14:36  GetSysService\Debug\vc60.pdb

     文件       2745  2012-04-01 14:35  GetSysService\GetSysService.cpp

     文件       4620  2012-04-01 14:11  GetSysService\GetSysService.dsp

     文件        532  2012-04-01 14:11  GetSysService\GetSysService.dsw

     文件      41984  2012-04-01 15:02  GetSysService\GetSysService.ncb

     文件      48640  2012-04-01 15:02  GetSysService\GetSysService.opt

     文件       1560  2012-04-01 14:36  GetSysService\GetSysService.plg

     文件       1250  2012-04-01 14:11  GetSysService\ReadMe.txt

     文件        300  2012-04-01 14:11  GetSysService\StdAfx.cpp

     文件        667  2012-04-01 14:11  GetSysService\StdAfx.h

     目录          0  2012-04-01 14:36  GetSysService\Debug

     目录          0  2012-04-01 15:02  GetSysService

----------- ---------  ---------- -----  ----

              1861439                    19


评论

共有 条评论