2025年3月31日 星期一 乙巳(蛇)年 正月初一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

VC++ 获取系统服务列表

时间:03-26来源:作者:点击数:35

首先需要添加引用using namespace System::Management;并且在vs中引用System.Managemen.dll

测试发现270个服务获取还是有点慢,不知道是否还有优化的余地。

  • //一个服务的基本信息
  • ref class OneServerInfo
  • {
  • public:
  • String ^Name; //服务名称
  • String ^DisplayName; //显示名称
  • String ^StartMode; //启动方式
  • String ^Started; //状态
  • String ^PathName; //路径
  • };
  • //获取所有服务的信息
  • array<OneServerInfo ^> ^ GetAllServerInfo(void)
  • {
  • array<OneServerInfo^> ^ServerArray = nullptr; //存放所有的服务信息
  • int i;
  • try
  • {
  • //获得服务集合
  • ManagementObjectSearcher ^searcher = gcnew ManagementObjectSearcher("SELECT * FROM Win32_Service");
  • if (searcher != nullptr)
  • {
  • System::Management::ManagementObjectCollection^ mo = searcher->Get();
  • if (mo != nullptr)
  • {
  • OneServerInfo ^info;
  • System::Management::ManagementObjectCollection::ManagementObjectEnumerator^ mEnumerator = mo->GetEnumerator();
  • if (mEnumerator != nullptr)
  • {
  • ServerArray = gcnew array<OneServerInfo^>(mo->Count);
  • for (i = 0; i < mo->Count;i ++)
  • {
  • info = gcnew OneServerInfo;
  • if (mEnumerator->MoveNext() == false) break;
  • System::Management::ManagementBaseObject^ mObj = mEnumerator->Current;
  • if (mObj == nullptr) break;
  • info->Name = mObj->GetPropertyValue("Name")->ToString(); //服务名称
  • info->DisplayName = mObj->GetPropertyValue("DisplayName")->ToString(); //显示名称
  • info->StartMode = mObj->GetPropertyValue("StartMode")->ToString(); //启动方式
  • info->Started = mObj->GetPropertyValue("Started")->ToString(); //状态
  • info->PathName = mObj->GetPropertyValue("PathName")->ToString(); //路径
  • //mObj->GetPropertyValue("StartName")->ToString(); //账户登录方式-这个暂时用不上,注意有些服务的这个会是空的,导致异常,请先进行判断
  • ServerArray[i] = info;
  • }
  • }
  • }
  • }
  • }
  • catch (Exception^ e1)
  • {
  • //SYS_LOG.Write(__FILE__ + __LINE__ + ":\t" + e1->Message);
  • System::Windows::Forms::MessageBox::Show(e1->Message, "错误", System::Windows::Forms::MessageBoxButtons::OK,
  • System::Windows::Forms::MessageBoxIcon::Error);
  • }
  • return ServerArray;
  • }

测试结果:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门