ManagementClass类解析和C#如何获取硬件的相关信息

时间:2021-09-25 01:10:20

现在先来介绍一下ManagementClass类,首先看一下类的继承结构:

ManagementClass类解析和C#如何获取硬件的相关信息

现在看一下MSDN对ManagementClass类的解释,对表示一个通用信息模型 (CIM) 管理类。 管理类是 WMI 类,如 Win32_LogicalDisk, ,该类型可表示一个磁盘驱动器,并 Win32_Process, ,它表示的进程 Notepad.exe 等。 此类的成员可以访问 WMI 数据,,使用一个特定的 WMI 类路径。

  一. 接下来我们来看一下ManagementClass类中一些较为常用的方法的源码:

  1.GetInstances():此方法存在四个重载

ManagementClass类解析和C#如何获取硬件的相关信息

 下面提供一下GetInstances(EnumerationOptions options)重载版本的代码:

public ManagementObjectCollection GetInstances(EnumerationOptions options)           {              if ((null == Path) || (null == Path.Path) || (0 == Path.Path.Length))                  throw new InvalidOperationException();              Initialize ( false );             IEnumWbemClassObject enumWbem = null;               EnumerationOptions o = (null == options) ? new EnumerationOptions() : (EnumerationOptions)options.Clone();              o.EnsureLocatable = false; o.PrototypeOnly = false;                SecurityHandler securityHandler    = null;             int status                        = (int)ManagementStatus.NoError;              try              {                 securityHandler = Scope.GetSecurityHandler();                              status = scope.GetSecuredIWbemServicesHandler(Scope.GetIWbemServices() ).CreateInstanceEnum_(ClassName,                                                              o.Flags,                                                              o.GetContext(),                                                              ref enumWbem                                                               );              }             finally               {                 if (securityHandler != null)                      securityHandler.Reset();              }                if (status < 0)             {                  if ((status & 0xfffff000) == 0x80041000)                      ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);                  else                      Marshal.ThrowExceptionForHR(status);              }              return new ManagementObjectCollection(Scope, o, enumWbem);          }

2.Get():

ManagementClass类解析和C#如何获取硬件的相关信息