foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
MessageBox.Show(p.ProcessName);
}

解决方案 »

  1.   

    可以用WMI来做,还可以列出其他机器上的线程。System.Management.ManagementOperationObserver observer=new ManagementOperationObserver();
    ManagementObjectCollection processlist;
    processlist=this.getProcessCollcetion("SELECT * FROM Win32_Process");
    foreach (ManagementObject mo in processlist)
    {
     Console.Writeln(mo["Name"].ToString());//获的进程名称
    }
    //getProcessCollcetion方法定义如下:
    public System.Management.ManagementObjectCollection getProcessCollcetion(string querystr)
    {
    ManagementObjectCollection pcol=null;
    System.Management.ObjectQuery oq;
    System.Management.ManagementObjectSearcher search;
    System.Management.ConnectionOptions connoption=new System.Management.ConnectionOptions();
    string machinename=//机器名
    try
    {
    connoption.Username=//登陆用户名
    connoption.Password=//登陆密码
    System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + machinename + "\\root\\cimv2", connoption);   
    oq=new ObjectQuery(querystr);
    search=new ManagementObjectSearcher(ms,oq);
    pcol=search.Get();
    }
    catch (Exception)
    {
    Console.Writeln("获取进程列表失败");
    }
    return pcol;
    }
      

  2.   

    未处理的“System.InvalidOperationException”类型的异常出现在 system.dll 中。System.Diagnostics.Process.GetProcesses()
    其他信息: 进程性能计数器已禁用,因此无法执行所请求的操作。
    :(
      

  3.   

    TO: Togecy2004(勤奋的猪) 
    其他信息: 进程性能计数器已禁用,因此无法执行所请求的操作。
    这样做就是了:try
    {
    RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\PerfProc\Performance", true);
    if (rk!=null)
    {
    object tmpObj=rk.GetValue("Disable Performance Counters");
    if (tmpObj!=null && !tmpObj.Equals(0))
    {
    rk.SetValue("Disable Performance Counters",0);
    }
    }
    foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
    {
    System.Console.WriteLine(p.ProcessName);
    }
    }
    catch (Exception ex)
    {
    System.Console.WriteLine(ex.Message);
    }