使用 WMI 和 CPU 使用率 C#

发布于 2024-07-16 08:52:49 字数 243 浏览 4 评论 0原文

如何使用 WMI 在 C# 中检索当前 CPU 使用情况? 我看过很多使用性能计数器的帖子,但我需要一个可以与远程计算机一起使用的解决方案。 我还在此处找到了 VB 解决方案,但如果可能的话,我更愿意用 C# 来完成这个任务。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

国粹 2024-07-23 08:52:49

至少可以说,WMI 的性能很混乱。 性能计数器在远程机器上工作正常。 使用 System.Diagnostics.PerformanceCounterXxx 类,构造函数具有采用 machineName 参数的重载。

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.

鸢与 2024-07-23 08:52:49

sysinternals 的工具“pslist”(免费)可以读取远程机器的使用情况。
您可以在命令框中启动程序并将结果提取到您的应用程序中。

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

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(); 
2024-07-23 08:52:49

成功了。 使用与此处几乎相同的代码: http://www.csharphelp.com/archives2/ archive334.html 结果我的路径不好,我终于解决了: new ManagementPath(string.Format("\\{0}\root\cimv2",machineName));

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文