不可能在局域网一台电脑就获取所有电脑访问网络的进程。
需要使用CS模式,你上面有一个接收端,下面的机子全部安装客户端,客户端使用GetTcpStatistics、GetUdpStatistics实时获取本机网络连接总数,并且使用GetExtendedTcpTable、GetExtendedUdpTable获取本机所有访问网络的进程以及远程IP地址。获取完毕开一个线程实时跟接收端通讯就行了。

解决方案 »

  1.   

    如果不打算安装客户端也有实现的方法。前提是
    局域网内计算机都打开了远程服务,通过对客户机的wmi的计数器来获得
    客户机当前的系统资源和进程。
    主要是使用PerformanceCounter来获得客户机的进程,
    然后根据进程来判断。
    performanceCounter1 = new System.Diagnostics.PerformanceCounter(); 
    performanceCounter1.CategoryName = "Processor"; 
    performanceCounter1.CounterName = "% Processor Time"; 
    performanceCounter1.InstanceName = "_Total"; 
    performanceCounter1.MachineName = SER_IP ; //客户机ip 上述方法可以获得客户机的cpu占用率。
    获取进程的方法也类似,你可以百度下看看。有很多。
      

  2.   


    LZ要求的是获取连接网络的进程以及这些进程连接的地址WMI里面我记得没有能获取的。
      

  3.   

    楼上说的对,是我没看清楚。
    使用System.Diagnostics.Process类可以启动和停止系统进程。GetProcesses函数返回了机器上正在运行的所有进程,它有两种定义,一种是用于本地机器,另一种用于远程机器。 如果想要获取本地机器上的运行进程,使用GetProcesses();否则使用GetProcesses(string machinename): public static Process[] GetProcesses(); public static Process[] GetProcesses(string); 比如: Process[] procList = new Process[100]; procList = Process.GetProcesses(); for ( int i=0; i<20; i++) { string strProcName = procList[i].ProcessName; int iProcID = procList[i].Id;; } 请不要忘记引用System.Diagnostic,将以下这行代码写在using列表中: using System.Diagnostics; 通过使用Process类的方法,我们甚至可以启动、停止或取消进程。
      

  4.   

    -_- 这种事情,我一般就直接在命令行下面用pstools.
      

  5.   

    可以考虑一下windows下的WMI协议