当前位置: 首页 > 编程语言 > C#

如何查找局域网内所有主机上某个正在运行的程序的所有实例?分享

时间:2023-04-11 03:39:57 C#

如何查找一个局域网内所有主机上一个正在运行的程序的所有实例?出于实际目的,SqlDataSourceEnumerator所做的是找到在LAN上的各种PC上运行的SQLServer的所有实例。是否有用于查找任意应用程序的运行实例的等效项?编辑:好的,所以这只有效,因为应用程序有预定义的合作方法。有没有一种直接的方法来确定给定文件(例如exe)是否存在于LAN上的机器上,即使应用程序本身当时没有运行?理解必须考虑权限。SQL枚举它在整个lan网段(子网掩码)上广播UDP数据包(端口1434)。在各种主机上运行的SQLBrowser代理服务侦听此数据包并使用本地实例列表进行响应。因此,对于枚举,已经有很多鸭子可供您使用:要使任何应用程序的行为相同,该应用程序必须实现这些缺失的部分。发现在子网段中的任意主机上运行的任意进程对于所有实用方法来说基本上都是不可能的。不同之处在于SqlDataSourceEnumerator会在LAN上找到“它可以看到”的所有实例。如果服务器进程配置为不响应请求,则不会看到。同样,您可以扫描任何可以通过某种方式远程知道其存在的应用程序。在最简单的情况下,应用程序将监听并响应连接。例如,一个应用程序可以绑定到一个TCP端口并监听任何请求并发回一个响应表明它是活动的并且正在运行,并且可以扫描网络上的主机以获取这些回复。但是,对于“任意应用”来说,大部分应用都没有这种网络发现机制。如果您控制任意应用程序,那么您可以在其中构建该功能。但如果您不这样做,那么您需要某种方式在任何给定主机上找到该应用程序,这意味着它需要某种网络交互。不,不。这适用于SQLServer的原因是SQLServer有一个侦听器在网络上侦听“发现”请求。然后应用程序可以在网络上发送广播消息并侦听对该请求的响应以发现SQL服务器实例。我想您可以编写一个通常会执行此操作的程序-它会侦听发现请求,使用某些WindowsAPI函数来枚举该计算机上运行的进程,并在请求的程序运行时做出响应。以上就是C#学习教程:如何查找局域网内所有主机上运行程序的所有实例?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: