本地操作系统:Windows Server 2003远程操作系统:Windows Server 2003 64位
我有一个pipe理服务器(32位),其中有许多计划的批处理脚本运行。 其中一个脚本是使用psexec在远程主机(64位)上启动进程。
我的脚本只是在下面做。 但是它会返回"The handle is invalid" 。
C:\psexec.exe \\%HOST% -i 1 -d -u %ADMINID% -p %ADMINPASSWORD% -w %PATH% MyApplication.exe
在线查找发现,会话1的RDP和会话1的psexec可能具有不同的环境和不同的可用系统资源(句柄)。 所以这可能是为什么我的psexec脚本不起作用。
但是,使脚本中的控制台会话下运行的psexec可以正常工作。
C:\psexec.exe \\%HOST% -i 0 -d -u %ADMINID% -p %ADMINPASSWORD% -w %PATH% MyApplication.exe
有一些人说在WoW64下运行psexec或者让psexec在WoW64下启动应用程序可以在64位机器上解决。 我猜控制台会话上的psexec是否类似。 谁能确认?
我的问题:我的应用程序有GUI,所以我仍然需要它在用户会话中运行。 有没有办法做到这一点? 请指教,谢谢。
您可以使用以下命令实现以交互模式运行:
C:\psexec.exe \\%HOST% -i 0 -d -u %ADMINID% -p %ADMINPASSWORD% -w %PATH% cmd /c MyApplication.exe
以上的作品,如果你不想从启动的应用程序捕获退出代码。
在线查找发现,会话1的RDP和会话1的psexec可能具有不同的环境和不同的可用系统资源(句柄)。 所以这可能是为什么我的psexec脚本不起作用。
不,这没有意义。 尽pipe某些句柄可以在进程间共享(实际上是inheritance的),但是在编程的范围之外没有任何意义。
有一些人说在WoW64下运行psexec或者让psexec在WoW64下启动应用程序可以在64位机器上解决。 我猜控制台会话上的psexec是否类似。 谁能确认?
WoW64的意思是“在Windows 64上的Windows”。 基本上,这是一个Windows 64操作系统内的32位环境。 每个win32可执行文件都将在“WoW64下”运行:由于无法使用64位版本的操作系统function,因此无法运行,需要经过WoW64提供的转换层。
我的问题:我的应用程序有GUI,所以我仍然需要它在用户会话中运行。 有没有办法做到这一点? 请指教,谢谢。
这可能是你的应用程序失败的原因(不是PSexec,而是你的应用程序):它试图获得一个窗口的句柄,因为它没有在交互式环境中运行,所以这个调用失败了(我猜它试图得到一个资源pipe理器或其他东西)。
(除此之外,尝试添加-i开关作为Rupasri Somavarapubuild议:它应该工作)