1

我最近在使用 Symantech 的一款名为 Norton EndPoint protection 的产品。它由一个服务器控制台应用程序和一个部署应用程序组成,我想将它们的部署方法合并到我的一个产品的未来版本中。

部署应用程序允许您选择运行 Win2K、WinXP 或 Win7 的计算机工作站。从 AD(Active Directory)或 NT 域(WINs/DNS NetBIOS 查找)提供工作站的选择。从列表中,可以单击并选择要部署端点软件的工作站,该端点软件是 Symantech 的病毒和间谍软件防护套件。

然后,在选择了哪些工作站应该接收软件包后,软件将 setup.exe 程序复制到每个工作站(可能通过管理共享 \pcname\c$),然后命令工作站执行 setup.exe,从而使工作站安装软件。

我真的很喜欢他们的产品是如何工作的,但不确定他们正在做什么来完成所有步骤。我没有对此进行任何深入调查,例如嗅探网络等...并想在这里查看是否有人熟悉我在说什么,以及您是否知道它是如何完成的或有想法如何实现的可以实现。

我的想法是他们正在使用管理员共享将软件复制到选定的工作站,然后发出 RPC 调用来命令工作站进行安装。

有趣的是,工作站执行此操作时,任何登录用户都不知道发生了什么,直到最后需要重新启动。此时,用户会收到一个弹出窗口,要求现在或稍后重新启动,等等……我的直觉是 setup.exe 程序正在弹出此消息。

直截了当:我正在寻找一种机制,一台基于 Windows 的机器可以告诉另一台机器执行某些操作或运行某些程序。

我的编程语言是 C/C++

任何想法/建议表示赞赏。

4

2 回答 2

3

我也在研究这个,因为我也想远程部署软件。我选择对 pstools 进行数据包嗅探,因为它已证明在此类远程管理任务中非常可靠。

我必须承认,我绝对是在考虑这个挑战。您现在可能已经完成了数据包嗅探,并发现了与我相同的东西。我希望通过留下这篇文章,我们可以帮助其他开发人员。

这就是 pstools 执行任意代码的方式:

它将系统服务可执行文件复制到 \\server\admin$(您要么必须已经在远程计算机上拥有本地管理员,要么提供凭据)。复制文件后,它使用服务控制管理器 API 使复制的文件成为系统服务并启动它。

显然,这个系统服务现在可以做它想做的任何事情,包括绑定到一个 RPC 命名管道。在我们的例子中,系统服务将安装一个 msi。要确认安装成功,您可以远程轮询注册表项或 rpc 函数。无论哪种方式,您都应该在完成后删除系统服务并删除文件(psexec 不会这样做,我猜他们不希望它被偷偷使用,在这种情况下留下服务至少会给出一个管理员有机会意识到有人已经破坏了他们的盒子。)这种方法不需要对远程机器进行任何预配置,只需您拥有管理员凭据并且文件共享和 rpc 在防火墙中打开。

我在 C# 中看到过使用 WMI 的演示,但我不喜欢这些解决方案。文件共享和 RPC 最有可能在防火墙中打开。否则,远程服务器的文件共享和远程 MMC 管理将无法正常工作。WMI 可以被阻止并且仍然保留这些功能。

我使用过很多远程安装的软件,其中很多不如 pstools 可靠。我的猜测是,这是因为那些开发人员正在使用其他不太可能在防火墙级别打开的方法。

简单的解决方案往往是最难以捉摸的。与往常一样,我向 SysInternals 人员致敬。他们是真正的黑客,在这个词的积极的、老派的含义上!

于 2010-04-26T19:28:17.220 回答
0

LANDesk 和 Altiris 产品也提供此类功能。您需要在客户端有一个守护程序侦听器,它将侦听来自服务器的指令/连接。一旦建立连接,任何事情都可能发生:您可以传输文件、启动安装脚本等,通常对那个盒子上的任何用户都是透明的。

我使用 Twisted 框架 ( http://twistedmatrix.com ) 用少量的 Linux 机器来做到这一点。它是 Python 和 Linux,而不是 Windows,但前提是相同的:监听客户端接受来自服务器的指令并执行它们。非常简单。

此功能也可以通过基于 Windows 的域中的 VB/Powershell 脚本来实现。

于 2010-04-09T16:54:14.897 回答