Question

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've also found a VB solution here, but I'd prefer to accomplish this in C# if possible.

Was it helpful?

Solution 3

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));

OTHER TIPS

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.

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(); 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top