How can i retrieve the current CPU usage in c# using WMI? I\'ve seen plenty of posts using performance counters, but I need a solution that can work with remote machines. I\
Got it working. Used pretty much the same code as found here: http://www.csharphelp.com/archives2/archive334.html Turns out I had a bad path, which i finally got sorted out: new ManagementPath(string.Format("\\{0}\root\cimv2",machineName));
the tool "pslist" from sysinternals (its free) could readout the usage from remotemachines. y could start the programm within a cmd-box and fetch the result into your application.
cmd.StartInfo.FileName = "cmd.com";
cmd.StartInfo.Arguments = "/c pslist .....";
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.RedirectStandardError = true;
// run process and catch output
cmd.Start();
string sOutput = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
Performance with WMI is messy, to say the least. Performance counters work OK with remote machines. Use the System.Diagnostics.PerformanceCounterXxx
classes, the constructors have overloads which take a machineName
argument.