不可能在局域网一台电脑就获取所有电脑访问网络的进程。
需要使用CS模式,你上面有一个接收端,下面的机子全部安装客户端,客户端使用GetTcpStatistics、GetUdpStatistics实时获取本机网络连接总数,并且使用GetExtendedTcpTable、GetExtendedUdpTable获取本机所有访问网络的进程以及远程IP地址。获取完毕开一个线程实时跟接收端通讯就行了。
需要使用CS模式,你上面有一个接收端,下面的机子全部安装客户端,客户端使用GetTcpStatistics、GetUdpStatistics实时获取本机网络连接总数,并且使用GetExtendedTcpTable、GetExtendedUdpTable获取本机所有访问网络的进程以及远程IP地址。获取完毕开一个线程实时跟接收端通讯就行了。
局域网内计算机都打开了远程服务,通过对客户机的wmi的计数器来获得
客户机当前的系统资源和进程。
主要是使用PerformanceCounter来获得客户机的进程,
然后根据进程来判断。
performanceCounter1 = new System.Diagnostics.PerformanceCounter();
performanceCounter1.CategoryName = "Processor";
performanceCounter1.CounterName = "% Processor Time";
performanceCounter1.InstanceName = "_Total";
performanceCounter1.MachineName = SER_IP ; //客户机ip 上述方法可以获得客户机的cpu占用率。
获取进程的方法也类似,你可以百度下看看。有很多。
LZ要求的是获取连接网络的进程以及这些进程连接的地址WMI里面我记得没有能获取的。
使用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类的方法,我们甚至可以启动、停止或取消进程。