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

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

C:\Windows\SysWOW64\Notepad.exe 

您可以通过检查任务monitor \ processes来知道该进程是32位,因为它将在文件名旁边有一个* 32。

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

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

任何人都知道这个方法?

我find了一个简单的方法来获得这个。

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

解决scheme:重命名System32中的64位mstsc.exe,以防止它replace32位进程。

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

为了得到这个错误,你可以获得文件的所有权,给自己完整的权限:

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

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

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

我发现强制mstsc运行在32位的唯一方法是运行depends(来自sysinternals),而不是从syswow64打开mstsc.exe。 使用开始分析运行后,将该选项保留为默认值。 这将导致mstsc * 32位运行。 现在我还没有find任何其他的方式来相同的。 锄头这个帮助弗拉维奥

这是令人困惑的64位版本的Windows,但位于SysWOW64目录中的东西是运行在“WOW”(Windows上的Windows)的32位可执行文件。 位于System32目录中的东西是64位的二进制文件,没有32位的等价物。 这里的命名是出于兼容性的原因,是跛脚,但我敢肯定,一些软件的作品,因为它,否则将无法正常工作。

你可以尝试从32位安装复制mstsc.exe到你的64位机器上并运行它,但据我所知64位窗口只有64位的exe文件,因此不能强制在32位模式下运行。

使用下面的脚本作为.bat文件,强制mstsc.exe x32的开始。

 @echo off set WinDir= start C:\Windows\SysWow64\mstsc.exe 

你有没有尝试从现有的32位安装复制32位可执行文件并运行?

您是否尝试过兼容模式,尝试更旧的操作系统? 我认为系统查看可执行文件的清单,如果它是为Vista开发的,那么它不会显示该标签。 但是我认为你可以编辑清单。

我的答案是: 是否有一个32位版本的mstsc.exe? 我认为64位Windows随附的mstsc是mstsc的64位版本。

真正的答案是:如果您想为64位应用程序编写dll扩展,则必须将您的dll重新编译为64位。 微软不是,也不应该有义务发布每个操作系统组件的32位版本。

另一个例子:如果你想写一个64位的Windows资源pipe理器的shell扩展它必须是一个64位的DLL。 没有32位版本的Windows资源pipe理器。 您既可以支持64位Windows,也可以不支持。