代码之家  ›  专栏  ›  技术社区  ›  MickeyfAgain_BeforeExitOfSO

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

  •  2
  • MickeyfAgain_BeforeExitOfSO  · 技术社区  · 16 年前

    出于实际目的,SqlDataSourceEnumerator所做的是查找在LAN上的各种PC上运行的所有SQL server实例。

    对于查找任意应用程序的运行实例,是否有等效的方法?

    编辑:好的,这只是因为这些应用程序有一个预定义的协作方法。有没有一种简单的方法来确定给定的文件(比如exe)是否存在于局域网上的某台计算机上,即使应用程序本身当时没有运行?必须考虑权限。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Remus Rusanu    16 年前

    它在整个lan段(子网掩码)上广播UDP数据包(端口1434)的SQL枚举是什么。在各种主机上运行的SQL Browser代理服务侦听此数据包,并用本地实例列表作出响应。因此,为了进行枚举,已经为您排列了许多duck:

    • 有一个众所周知的SQL isntance发现协议,即UDP 1434广播和响应协议
    • 有一个服务正在侦听此广播,它是由SQL Server安装程序安装的
    • 有一个客户端库来实现广播请求格式化和响应解析,您可以利用它

    为了使任意应用程序具有相同的行为,所述应用程序必须实现这些缺失的部分。在子网段中发现运行在任意主机上的任意进程对于所有实际方法来说基本上是不可能的。

        2
  •  0
  •   David    16 年前

    不同之处在于,SqlDataSourceEnumerator在局域网上查找“它可以看到”的所有实例。如果将服务器进程配置为不响应该请求,则不会看到它。

    但是,对于“任意应用程序”,大多数应用程序都没有这样的网络发现机制。如果控制任意应用程序,则可以将该功能构建到其中。但是如果您不这样做,那么您将需要某种方法在任何给定的主机上查找该应用程序,这意味着它将需要某种网络交互。

        3
  •  0
  •   Eric Petroelje    16 年前

    不,没有。

    之所以适用于SQLServer,是因为SQLServer有一个侦听器,可以在网络上侦听“发现”请求。然后,应用程序可以在网络上发送广播消息,并侦听对该请求的响应,以发现SQL server实例。

    推荐文章