如何强制 32 位版本的远程桌面客户端在 64 位 Vista 上运行?

如何强制 32 位版本的远程桌面客户端在 64 位 Vista 上运行?

通常,从命令行运行 32 位版本的 Windows 应用程序非常容易,例如运行窗口:

C:\Windows\SysWOW64\Notepad.exe

您可以通过检查任务监视器\进程来判断该进程是 32 位,因为文件名旁边会有 *32。

但是,远程桌面客户端 (mstsc.exe) 不想玩球。无论我如何启动它(运行窗口、32 位 cmd 窗口等),它总是从 C:\Windows\System32\mstsc.exe 运行 64 位版本。我甚至尝试编写一个 32 位 C++ 程序来创建它(通常子进程也是 32 位的),但这没有用。

我们需要运行 32 位版本,因为我们有一些与远程桌面集成的自定义 dll,并且无法在 64 位进程中加载​​ 32 位 dll。

有人知道解决这个问题的方法吗?

答案1

我找到了一种解决这个问题的简单方法。

http://www.davidmoore.info/2009/12/02/running-32-bit-remote-desktop-connection-on-windows-64-bit/

解决方案:将 64 位 mstsc.exe 从 System32 重命名,以防止其替换 32 位进程。

如果您有权重命名该文件,则这很简单。如果您使用的是 NTFS,您可能会收到“您需要 TrustedInstaller 的权限才能更改此文件”错误。

为了解决此错误,您可以获取文件所有权并授予自己完全权限:

  1. 浏览到 %SystemRoot%\System32
  2. 右键单击 mstsc.exe 并选择属性
  3. 转到“安全”选项卡
  4. 单击“高级”
  5. 转至所有者选项卡
  6. 单击“编辑”
  7. 从“将所有者更改为:”列表中,选择您的用户名
  8. 单击“确定”
  9. 转到“权限”选项卡
  10. 单击更改权限…
  11. 单击“添加”
  12. 输入您的用户名并单击确定
  13. 勾选“允许”列中的“完全控制”框
  14. 单击“确定”
  15. 单击“确定”
  16. 将出现 Windows 安全警告;单击“是”继续
  17. 单击“确定”

现在,您可以将文件 mstsc.exe 重命名为 mstsc.exe.bak 之类的名称

然后,您可以从 %SystemRoot%\SysWOW64 启动 mstsc.exe,并且将运行 32 位远程桌面连接。

答案2

我发现强制 mstsc 在 32 位上运行的唯一方法是运行依赖项(来自 sysinternals),然后从 syswow64 打开 mstsc.exe。运行后使用开始分析保留选项为默认。这将导致 mstsc*32 位运行。目前我还没有找到其他方法来实现相同的效果。希望这对 Flavio 有帮助

答案3

64 位版本的 Windows 让人困惑,但 SysWOW64 目录中的内容是可在“WOW”(Windows 上的 Windows)中运行的 32 位可执行文件。System32 目录中的内容是 64 位二进制文​​件,没有 32 位等效文件。此处的命名是出于兼容性原因,虽然不太恰当,但我确信有些软件正是因为这样才能运行,否则就无法运行。

您可以尝试将 mstsc.exe 从 32 位安装复制到您的 64 位机器上并运行它,但据我所知,64 位 Windows 只有一个用于 mstsc 的 64 位 exe,因此不能强制在 32 位模式下运行。

答案4

您是否尝试过从现有的 32 位安装复制 32 位可执行文件并运行它?

相关内容