System.Management.ManagementException

Nig*_*ker 6 .net c# system.management

我正在运行以下代码:

System.Management.ManagementClass wmiNetAdapterConfiguration = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration");
System.Management.ManagementObjectCollection wmiNetAdapters = wmiNetAdapterConfiguration.GetInstances();
Log.logInfo("Net adapters:" + wmiNetAdapters.get_Count());
Run Code Online (Sandbox Code Playgroud)

在一些机器上它是好的,在一些机器上我得到以下错误:

System.Management.ManagementException:未找到

调用堆栈:

System.Management.ManagementException: Not found 
   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
   at System.Management.ManagementScope.InitializeGuts(Object o)
   at System.Management.ManagementScope.Initialize()
   at System.Management.ManagementObject.Initialize(Boolean getObject)
   at System.Management.ManagementClass.GetInstances(EnumerationOptions options)
   at System.Management.ManagementClass.GetInstances()
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

Cod*_*ray 11

System.Management命名空间提供的功能取决于WMI(Windows Management Instrumentation)服务.

我怀疑WMI服务尚未在抛出该异常的系统上启动.

出于疑难解答的目的,您可以使用"管理工具"→"服务"实用程序进

如果事实证明是这种情况,您可以将代码包装在try- catch块中并使用ServiceController该类来启动和停止相应的服务.

  • @Night:我非常怀疑WMI服务在您的计算机上运行*.WMI服务的名称是`winmgmt`.再次检查服务或任务管理器,只是为了确定.[`ManagementStatus`枚举](http://msdn.microsoft.com/en-us/library/system.management.managementstatus.aspx)表示"未找到"错误意味着"无法找到该对象" ,这证实了我的理论,它无法找到它试图在内部使用的WMI对象. (6认同)
  • 我遇到了同样的问题,Windows Management Instrumentation正在服务中运行.当我以自己的身份运行时,我没有得到异常,当我尝试以管理员身份运行时,我只收到错误. (3认同)

小智 8

我遇到了类似的问题,因为 WMI 文件以某种方式损坏了。

\n

使固定:

\n
    \n
  1. 以管理员身份运行cmd
  2. \n
  3. 输入“cd wbem”并按 Enter 键
  4. \n
  5. 输入 \xe2\x80\x9cdir /b *.mof *.mfl | findstr /v /i uninstall > moflist.txt & for /F %s in (moflist.txt) do mofcomp %s\xe2\x80\x9d 并按 Enter 键。
  6. \n
\n

这应该可以解决 WMI 文件损坏问题。

\n