WMI应该可以,推荐:
你试试C:\WINNT\system32\wbem\wbemtest.exe,它可以查到对象。
详情请见
http://dev.csdn.net/develop/article/36/36690.shtm
(WMI 脚本入门)

解决方案 »

  1.   

    你试试C:\WINNT\system32\wbem\wbemtest.exe
    但总是提示:
    “描述: 无法为本地连结使用用户凭证”连本地或远程都这样
    为什么?
      

  2.   

    连接本机不用输用户名和密码(你是用管理员帐户登陆系统的)
    一般访问的是root\cimv2;
    连接其他机器输入\\IP\root\cimv2 
    进去后选枚举,点击递归;
    对于Win2000有600多个对象;
    对于WinXp有900多个对象;
    对于Win2003有1000多个对象。
      

  3.   

    楼上说的极是。
    但用wbemtest.exe查了查,不知道哪个才是CPU使用率或内存使用情况的。
      

  4.   

    WMI只能获得CPU或内存的型号等硬件信息,你想查CPU使用率或内存使用情况,得用System.Diagnostics命名空间下的Process类。
      

  5.   

    是否可以用snmp来获得?但不知怎么做
      

  6.   

    用SNMP吧,找个SNMP的控件,再找个MIB,很容易实现的
      

  7.   

    另外若用:
    PerformanceCounter pc = new PerformanceCounter(CategoryName,CounterName,InstanceName);
    float cpuLoad = pc.NextValue();
    但它只是查的本机的(数值也准确),又如何查远程的PC呢?另外又用另外一种方法,WMI,但查的很不准,也不知是不是取得方法不对还是咋的?
    代码如下:
    queryCollection1 = getProcessCollection("root","hexin2002",mip,"SELECT * FROM Win32_PerfRawData_PerfProc_Process");
    }
    //统计进程
    long mcount=0,malltime=0,mcpu=0,i = 0;
    long[] mprocess = new  long[500];
    foreach ( ManagementObject mo1 in queryCollection1)
    {
      mcount++;
      mprocess[i] = long.Parse(mo1.Properties["PercentProcessorTime"].Value.ToString());
      malltime += mprocess[i];
     //ID号是0的进程是CPU空闲进程:System Idle Process
      if (long.Parse(mo1["IDProcess"].ToString()) == 0)
        mcpu = mprocess[i];
    }
    this.textBox3.Text =((malltime-mcpu)*100/malltime).ToString();
      

  8.   

    Msdn 2004 oct dvd中有一个PerfMon的完整示例,可以参考一下
      

  9.   

    估计不同的操作系统有不同的算法吧,没办法的,WMI好像只有98以上才支持的
      

  10.   

    MSDN上有如下范例,也不知道是什么用处:
    set perf_instance1 = wmi_service.get( sObjectPath )
    N1 = perf_instance1.PercentProcessorTime
    D1 = perf_instance1.TimeStamp_Sys100NSwhile true'Sleep for one second = 1000 ms
    wscript.sleep(1000)set perf_instance2 = wmi_service.get( sObjectPath )
    N2 = perf_instance2.PercentProcessorTime
    D2 = perf_instance2.TimeStamp_Sys100NS' CounterType - PERF_100NSEC_TIMER
    ' Formula = ((N2 - N1) / (D2 - D1)) x 100if ( 0 = (D2-D1) ) then
    wscript.echo "divide by zero"
    else
    PercentProcessorTime = ((N2 - N1) / (D2 - D1)) * 100
    wscript.echo "% Processor Time = " , PercentProcessorTime
    end ifN1 = N2
    D1 = D2
    wend
      

  11.   

    用PercentProcessorTime = ((N2 - N1) / (D2 - D1)) * 100测,
    倒是有数值返回,但和操作系统的TASKMANAGER的不太一样,
    不知道哪个准?
      

  12.   

    还有啊,若是多CPU或超线程的又怎么处理?