您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

VC++ 获取系统服务列表

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

首先需要添加引用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;
		}

测试结果:

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