通常,从命令行运行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的权限才能更改此文件”错误。
为了得到这个错误,你可以获得文件的所有权,给自己完整的权限:
现在,您可以将文件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,也可以不支持。