使用C#(性能计数器)的远程计算机的CPU使用率

使用C#(性能计数器)的远程计算机的CPU使用率,c#,performancecounter,C#,Performancecounter,我试图使用PerformanceCounter类查找另一台远程计算机的CPU使用情况,但它引发了一个异常: “System.ComponentModel.Win32异常:未找到网络路径 位于System.Diagnostics.PerformanceMonitor.Init() 如果我在性能计数器对象的Machinename属性中设置了我的机器名,则工作正常 我已经在远程机器上设置了防火墙设置 以下是代码: 代码如下: 公共部分类Default10:System.Web.UI.Page { 专用

我试图使用PerformanceCounter类查找另一台远程计算机的CPU使用情况,但它引发了一个异常:

“System.ComponentModel.Win32异常:未找到网络路径 位于System.Diagnostics.PerformanceMonitor.Init()

如果我在性能计数器对象的Machinename属性中设置了我的机器名,则工作正常

我已经在远程机器上设置了防火墙设置

以下是代码:

代码如下:

公共部分类Default10:System.Web.UI.Page {

专用性能计数器cpucounter;
私人业绩计数器;
受保护的无效页面加载(对象发送方、事件参数e)
{
试一试{
InitialiseCPUCounter();
InitialiseRAMCounter();
//cpucounter.NextValue();
cpucounter.MachineName=“XXXXXXXXX”/*远程计算机名称*/
cpucounter.NextValue();
系统线程线程睡眠(1000);
this.Label1.Text=“CPU使用:”+Convert.ToInt32(cpucounter.NextValue()).ToString()+“%”+“
”; this.Label2.Text=“RAM用法:”+Convert.ToInt32(ramcounter.NextValue()).ToString()+“MB
”; } 捕获(例外情况除外) { 答复.编写(ex); } } 私有void InitialiseCPUCounter() { cpucounter=新性能计数器(“处理器”,“处理器时间”,“处理器总时间”,true); } 私有void InitialiseRAMCounter() { ramcounter=新性能计数器(“内存”,“可用MB”,真); } }
使用WIN32_Processor(WMI)类的属性LoadPercentage完成了添加代码可能会帮助我们更好地理解问题:-)您是否100%确定MachineName正确并且您有权访问该电脑?是的,机器名正确。因为MachineName是唯一的属性,所以在哪里指定访问权限
private PerformanceCounter cpucounter;
private PerformanceCounter ramcounter;
protected void Page_Load(object sender, EventArgs e)
{

     try{
    InitialiseCPUCounter();
    InitialiseRAMCounter();
    //cpucounter.NextValue();


    cpucounter.MachineName = "XXXXXXXXX";/*Remote Machine Name*/

    cpucounter.NextValue();
    System.Threading.Thread.Sleep(1000);

   this.Label1.Text = "CPU Usage:" + Convert.ToInt32(cpucounter.NextValue()).ToString() + "%"+"<br/>";
   this.Label2.Text ="RAM Usage: " +Convert.ToInt32(ramcounter.NextValue()).ToString() + "MB<br/>";
     }
    catch(Exception ex)
     {
        Response.Write(ex);
    }
  }
  private void InitialiseCPUCounter()
  {
      cpucounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
  }
  private void InitialiseRAMCounter()
  {
      ramcounter = new PerformanceCounter("Memory", "Available MBytes", true);
  }

  }