我们需要在 64 位 Vista 上运行 32 位版本的远程桌面客户端,因为我们的部分产品集成了它,并通过虚拟通道与终端服务器端应用程序通信。集成加载了一些第三方32位驱动,在64位进程中无法加载32位dll。
通常从命令行运行 32 位版本的 windows 应用程序是很容易的,例如运行窗口:
C:\Windows\SysWOW64\Notepad.exe
您可以通过签入 task monitor\processes 来判断该进程是 32 位的,因为它的文件名旁边将有一个 *32。
但是,远程桌面客户端 (mstsc.exe) 不想玩球。无论我如何启动它(运行窗口、32 位 cmd 窗口等),它总是从 C:\Windows\System32\mstsc.exe 运行 64 位版本。我尝试编写一个 32 位 C++ 程序来创建它(通常子进程也是 32 位的),但这不起作用。
我也试过打电话:
Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection
在启动 mstsc.exe 之前和之后,但这也无济于事。
有人知道解决这个问题的方法吗?
[编辑] 我已经对进程监视器进行了一些进一步的调查,似乎 32 位版本的 mstsc 确实首先启动,但是这会创建第二个 64 位进程并且 32 位版本关闭。