Joh*_*bly 5 c++ 64-bit vista64 remote-desktop
我们需要在64位Vista上运行32位版本的远程桌面客户端,因为我们的部分产品与其集成,并通过虚拟通道与终端服务器端应用程序进行通信。该集成加载一些第三方32位驱动程序,并且无法在64位进程中加载32位dll。
通常,从命令行运行 32 位版本的 Windows 应用程序非常容易,例如运行 window:
C:\Windows\SysWOW64\Notepad.exe
Run Code Online (Sandbox Code Playgroud)
您可以通过检查任务监视器\进程来判断该进程是 32 位的,因为文件名旁边会有一个 *32。
然而,远程桌面客户端(mstsc.exe)不想玩球。无论我如何启动它(运行窗口、32 位 cmd 窗口等),它始终从 C:\Windows\System32\mstsc.exe 运行 64 位版本。我尝试编写一个 32 位 C++ 程序来创建它(通常子进程也是 32 位),但这不起作用。
我也尝试打电话:
Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection
Run Code Online (Sandbox Code Playgroud)
启动 mstsc.exe 之前和之后,但这也没有帮助。
有人知道解决这个问题的方法吗?
[编辑] 我用进程监视器做了一些进一步的调查,似乎 32 位版本的 mstsc 确实首先启动,但随后这会创建第二个 64 位进程,并且 32 位版本关闭。
你的问题很混乱(1)。系统上的每个可执行文件都编译为32 位或64 位可执行文件。如果您有 64 位可执行文件,那么如何调用它并不重要:从 32 位命令窗口、“运行”菜单或另一个 32 位程序;它将始终作为 64 位进程运行。
您可以通过在 的输出中查找 x64 来检查可执行文件是 32 位还是 64 位dumpbin /HEADERS mstsc.exe。
您需要下载并安装 32 位版本的mstsc.exe. 事实上,我相信mstsc.exe它在很大程度上与安装无关,因此您可以简单地从 32 位系统复制它并运行它。
更新:
eran指出mstsc.exe直接调用 32 位并不能解决问题,因为mstsc检测到它正在 64 位系统上运行并重新调用自身的 64 位版本。我不知道它为什么这样做,或者如何阻止它这样做。如果您这样做,请编辑此答案。
(1) Microsoft 通过以32 位和 64 位版本的形式提供许多可执行文件,并神奇地重新映射 PATH 以便找到其中一个,从而极大地缓解了这种混乱;通常具有明显相同的路径名。但这只是“雾里看花”,实际上路径名总是不同的。
| 归档时间: |
|
| 查看次数: |
5137 次 |
| 最近记录: |