c#在一个简单的WMI查询中“无效的类”

我希望在查询之后find一些结果,但是在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"]); } 

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

有人有一个想法?

Solutions Collecting From Web of "c#在一个简单的WMI查询中“无效的类”"

我解决了我的问题。 看来我的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”并按回车

7)输入“winmgmt / resetRepository”并重启电脑。

按照dominus的建议,使用Process类:

 ... Process[] processes = Process.GetProcesses(); foreach (Process process in processes) Console.WriteLine(process.ProcessName); ...