c# 'Invalid class' in a simple WMI query

Guillaume V picture Guillaume V · Aug 2, 2011 · Viewed 11.5k times · Source

I will like to find some result after this query, but in the beginning of the foreach loop, the error "invalid class" occur.

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"]);
 }

I use window 7 64, and i wonder if Win32_Process exists. I also use wmi code creator download it from http://www.microsoft.com/downloads/en/details.aspx?familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en but i dont find any Win32_Process.

Somebody has an idea ?

Answer

Guillaume V picture Guillaume V · Aug 3, 2011

I solve my problem. It seem that my WMI was corrupt. After testing WMI with this step:

  1. Click Start, click Run, type wmimgmt.msc, and then click OK.
  2. Right-click WMI Control (Local), and then click Properties.

I saw Win32_Process was a invalid class I follow this step for repair my WMI, and it work

1) In the start menu type "cmd"

2) Type "net stop winmgmt" and press Enter

3) Open a Windows Explorer and locate the path to C:\ windows\system32\WBEM\ folder and rename the Repository folder to something else like RepositoryOLD (right click and choose 'Rename Folder').

4) restart the computer

5) In the start menu type "cmd"

6) Type "net stop winmgmt" and press enter

7) Type "winmgmt /resetRepository" and restart the computer.