如何从 telnet 启动 Windows GUI 应用程序

如何从 telnet 启动 Windows GUI 应用程序

我在 Windows XP 客户端计算机上运行了一个 GUI 应用程序。我想远程登录,将其关闭,通过 ftp 提取一些文件,然后重新启动它。

我对最后一部分感到困惑,因为似乎从 telnet 启动任何 GUI 应用程序都只是将其添加到进程列表中,而不是弹出表单或真正开始执行任何操作(例如写入日志文件)。

自己尝试一下。Telnet localhost => notepad.exe

有没有简单的方法可以解决这个限制?我也有管理员安装在所有这些机器上,也许有办法以某种方式使用它?我对此表示怀疑,因为这是一个自动化脚本,而且我的经验是 RAdmin 对此没有任何支持。

顺便说一下,我开始这次讨论在 stackoverflow 上,有人向我推荐你们可能对此有所了解。

答案1

http://msdn.microsoft.com/en-us/library/ms687096(VS.85).aspx详细而又冗长地描述了从 telnet 会话启动应用程序时发生的情况,但最终却毫无帮助。很多年前,我为 Windows NT3.50 编写了一个 telnet 服务器,我通过艰苦的方式学到了所有这些知识 :-)

我认为您需要重新考虑一下您要做什么。根据您的描述,我猜您有一个由登录用户运行的 GUI 应用程序,并且您想终止它以便进行一些维护然后重新启动它。终止它很容易,因为您可以直接终止该进程。以任何有用的方式重新启动它都比较困难。您可以将 PC 设置为自动登录并从“开始”菜单运行该应用程序吗?然后,您可以在获取文件后重新启动 PC。我有点羞于承认这是我在类似情况下所做的。

JR

答案2

看来 Windows telnet 服务无法做到这一点。我甚至测试了在本地系统启用了“与桌面交互”的帐户,但这不起作用(这没关系,因为它会带来严重的安全隐患)。

作为使用 telnet 的替代方案,我建议执行程序。PsExec 是目前由 Microsoft 管理的 SysInternal 工具的一部分。使用-我启用桌面交互的选项。

psexec \\machine -u user -p password -i -w "C:\application" myapp.exe

您可以下载 PsExec这里

答案3

这不应该与任何 GUI 应用程序交互,因为 telnet 服务器不为您提供对运行 GUI 应用程序的窗口站的访问权限。为了运行远程 Windows GUI 应用程序,您需要在终端服务会话(或类似会话)中启动它。

答案4

如上所述,PsExec(sysinternals)提供了解决方案,它是 -i 标志,允许在目标上创建 GUI

使用 -d 标志,您的调用不会挂起(后台执行),因为它会等待应用程序终止

现在为了安全的远程执行,你可能想要通过 Windows 的 ssh 来执行它,在这种情况下,freeSSHD 是一个解决方案,请记住以目标用户的身份执行它,因此所有的生成都发生在同一个用户身上(不要以 SYSTEM 的身份执行 freeSSHD,而是以你的用户名执行)

在 Putty 中执行 Acrobat 的示例

C:\PsExec.exe \\127.0.0.1 -d -i “C:\Program Files\...\AcroRd32.exe”


另一个需要考虑使用 psexec 的原因是 v1.55 不支持会话 ID,而当前的 v1.9x 却支持

因此,对于 xp/nt 系统,可能不是“-i”,而是
“-i 0”,而对于
vista/7 系统,可能不是“-i”,而是“-i 1”

相关内容