当前位置:编程学习 > C#/ASP.NET >>

局域网内怎样通过IP获取其他机器的进程???

    我想做个局域网控制软件,例如,老师上课可以监视到同学们有没有玩游戏……。在局域网内搜索在线IP已成功完成,但怎样通过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占用率。
获取进程的方法也类似,你可以百度下看看。有很多。
--------------------编程问答--------------------
引用 4 楼 wen98091 的回复:
如果不打算安装客户端也有实现的方法。前提是
局域网内计算机都打开了远程服务,通过对客户机的wmi的计数器来获得
客户机当前的系统资源和进程。
主要是使用PerformanceCounter来获得客户机的进程,
然后根据进程来判断。


C# code

performanceCounter1 = new System.Diagnostics.PerformanceCounter(……


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类的方法,我们甚至可以启动、停止或取消进程。

--------------------编程问答--------------------
引用 4 楼 wen98091 的回复:
如果不打算安装客户端也有实现的方法。前提是
局域网内计算机都打开了远程服务,通过对客户机的wmi的计数器来获得
客户机当前的系统资源和进程。
主要是使用PerformanceCounter来获得客户机的进程,
然后根据进程来判断。


C# code

performanceCounter1 = new System.Diagnostics.PerformanceCounter(……

此方法仅能在子网,公网是不行的 --------------------编程问答-------------------- 楼主说的就是局域网。 --------------------编程问答-------------------- 帖子沉了,顶起来!!! --------------------编程问答-------------------- 那么多就没有师父您想要的结果么? --------------------编程问答-------------------- 看这里:


获取远程机器的进程信息 --------------------编程问答-------------------- -_- 

这种事情,我一般就直接在命令行下面用pstools.
--------------------编程问答-------------------- 你太牛了。。这个都有。。别告诉我那些都是你自己做的。。佩服佩服啊
引用 11 楼 computerfox 的回复:
看这里:


获取远程机器的进程信息
--------------------编程问答-------------------- 可以考虑一下windows下的WMI协议 --------------------编程问答-------------------- 11楼的高手,能不能放点代码和思路出来呀???就一个界面接受不了呀!!! --------------------编程问答--------------------
引用 11 楼 computerfox 的回复:
看这里:


获取远程机器的进程信息


运行之后出现此错误:
     
    应用程序中发生了无法处理的异常。如果单击“继续”,应用程序将忽略此错误并尝试继续。
    如果单击退出,应用程序将立即关闭。该服务器不可操作

--------------------编程问答-------------------- 学习了 顶 --------------------编程问答--------------------
友情帮顶下!顺便学习学习!
--------------------编程问答-------------------- 原作者是个印度人,哈哈
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,