c#简单WMI查询中的"无效类"

Gui*_*e V 10 c# windows wmi wmi-query

我想在此查询后找到一些结果,但在foreach循环的开头,出现错误"invalid class".

string wmiQuery = string.Format("SELECT * FROM Win32_Process");
var searcher = new ManagementObjectSearcher(wmiQuery);
var wmiResults = searcher.Get();

foreach (ManagementObject retObject in wmiResults)
 {
   Console.WriteLine("[{0}]\tName: {1}", retObject["ProcessID"], retObject["Name"]);
 }
Run Code Online (Sandbox Code Playgroud)

我使用窗口7 64,我想知道Win32_Process是否存在.我也使用wmi代码创建者从http://www.microsoft.com/downloads/en/details.aspx?familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en下载它, 但我找不到任何Win32_Process.

有人有想法吗?

Gui*_*e V 13

我解决了我的问题.看来我的WMI已经腐败了.在使用此步骤测试WMI之后:

  1. 单击"开始",单击"运行",键入wmimgmt.msc,然后单击"确定".
  2. 右键单击"WMI控件(本地)",然后单击"属性".

我看到Win32_Process是一个无效的类我按照这一步修复我的WMI,它工作

1)在开始菜单中键入"cmd"

2)键入"net stop winmgmt"并按Enter键

3)打开Windows资源管理器并找到C:\ windows\system32\WBEM \文件夹的路径,并将Repository文件夹重命名为RepositoryOLD之类的其他内容(右键单击并选择"重命名文件夹").

4)重启电脑

5)在开始菜单中键入"cmd"

6)键入"net stop winmgmt"并按Enter键

7)键入"winmgmt/resetRepository"并重新启动计算机.