![PSExec 打开没有用户登录的交互式程序](https://linux22.com/image/1419369/PSExec%20%E6%89%93%E5%BC%80%E6%B2%A1%E6%9C%89%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E7%9A%84%E4%BA%A4%E4%BA%92%E5%BC%8F%E7%A8%8B%E5%BA%8F.png)
我正在使用 PSExec 在另一台计算机上打开某个带有小型 GUI 的服务器程序。本地和目标都是 Win7 64 位。我使用
psexec \myothercomputer -u Me -p mypass -i -d -h myapp.exe
当我登录到另一台计算机时,此方法运行正常。但我以这种方式运行此程序的想法是不必登录该计算机。
今天我尝试在未登录的情况下运行该应用程序,只是想看看会发生什么。我以为它会返回错误。然而 PSExec 返回了我的进程 ID。
然后我登录到那台计算机,令我惊讶的是,我看到了一种图形“阴影”,我的意思是,我试图运行的应用程序的形状!......就像它打开了它一样,即使我没有登录。
我以为是屏幕刷新问题,我尝试了几种方法来“唤醒”或与该应用交互,但显示效果并不理想。使用任务管理器时,我注意到该应用的内存消耗比预期的要小……所以我猜是某个时候出了问题。而这正是我真正期望的,它会运行。
问题:为什么PSExec可以在没有登录的情况下成功打开交互式应用程序?那么为什么我的交互式应用程序无法正常运行?
答案1
根据执行程序页面上,-i [session] 开关执行以下操作:
运行该程序,使其与远程系统上指定会话的桌面进行交互。如果未指定会话,则进程在控制台会话中运行。
在您的命令中,您没有像手册页所示的那样在 -i 之后立即指定会话。
我还注意到您已指定 -d。我认为您不能混合使用 -i 和 -d,尤其是当用户未登录时,因为 -i 在控制台会话中运行,但 -d 表示不要使用控制台会话来确定进程生存期:
-d 不等待进程终止(非交互式)。