是否可以通过ssh进入Windows(通过cygwin sshd)并在登录的Windows用户桌面上启动程序?

时间:2009-11-20 15:22:57

标签: windows ssh cygwin

是否可以通过ssh进入Windows(通过cygwin sshd)并在已登录的Windows用户桌面上启动程序?

换句话说,用户ABC登录Windows并且远程用户使用ABC登录/密码通过ssh登录,远程ABC可以在本地ABC用户的桌面上弹出应用程序吗?

我在Stackoverflow上问这个,而不是Serverfault,因为这样做的动机本质上是程序化的。远程调用将来自Linux机器,因此虽然可能(?)使用WMI或其他方法来执行此操作,但ssh似乎是最简单的。

很高兴听到更简单/更好的选择。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您的cygwin sshd在特权帐户下运行,它可以获取当前桌面的句柄并在其上放置窗口。请参阅STARTUPINFO for CreateProcess的桌面参数。

答案 1 :(得分:1)

我自己的解决方案。在Windows XP上测试过(但我认为它应该在任何Windows环境中运行一点点)。

您需要使用psexecquser命令。

首先,将 psexec quser 放在cygwin的 PATH 环境变量中包含的目录中。只需将这些文件复制到cygwin下的bin目录中即可。

您可以在%system32%\ dllcache 目录中找到 quser.exe 。但由于任何原因我无法通过cygwin命令(即ls,cp等)访问它(或访问提到的目录),所以我使用microsoft的copy命令复制到cygwin \ bin文件夹。

备注:我认为将套件psutils全部放在cygwin的bin文件夹中会很有帮助。第一次运行这些实用程序时,必须接受Microsoft警告的许可协议,因此第一次从Windows资源管理器运行psexec。

然后在.bash_profile文件中创建这些别名:

alias winrun='psexec \\\\YOU_USERNAME_HERE -d -i `quser | grep YOU_USERNAME_HERE | grep console | awk "{print \\\$3}"`'
alias explorethis='winrun explorer $(cygpath -w `pwd`)'

请记住,如果需要将其作为命令的参数传递,则需要使用cygpath转换当前目录(“explorethis”就是一个示例)。