AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 25969
Accepted
John Sibly
John Sibly
Asked: 2009-06-16 07:46:49 +0800 CST2009-06-16 07:46:49 +0800 CST 2009-06-16 07:46:49 +0800 CST

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

  • 772

通常从命令行运行 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 位的),但这不起作用。

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

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

remote-desktop windows-vista 64-bit
  • 7 7 个回答
  • 18625 Views

7 个回答

  • Voted
  1. Best Answer
    David Moore
    2009-12-02T14:33:35+08:002009-12-02T14:33:35+08:00

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

    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 位远程桌面连接。

    • 4
  2. Flavio
    2009-09-10T05:00:08+08:002009-09-10T05:00:08+08:00

    我发现强制 mstsc 以 32 位运行的唯一方法是运行依赖项(来自 sysinternals),而不是从 syswow64 打开 mstsc.exe。使用启动分析运行它后,将选项保留为默认值。这将导致 mstsc*32 位运行。目前我还没有找到任何其他方法。锄头这帮助弗拉维奥

    • 3
  3. Jim
    2009-06-16T07:57:20+08:002009-06-16T07:57:20+08:00

    这对 64 位版本的 Windows 感到困惑,但位于 SysWOW64 目录中的东西是在“WOW”(Windows 上的 Windows)中运行的 32 位可执行文件。System32 目录中的东西是 64 位二进制文​​件,没有 32 位等价物。这里的命名是出于兼容性原因并且是蹩脚的,但我确信某些软件可以正常工作,因为它否则将无法正常工作。

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

    • 2
  4. Prem Ananthu
    2012-05-30T06:18:18+08:002012-05-30T06:18:18+08:00

    使用以下脚本作为 .bat 文件,强制启动 mstsc.exe x32。

    @echo off
    set WinDir=
    start C:\Windows\SysWow64\mstsc.exe 
    
    • 2
  5. Kevin Kuphal
    2009-06-16T07:56:35+08:002009-06-16T07:56:35+08:00

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

    • 1
  6. Knox
    2009-06-16T10:21:42+08:002009-06-16T10:21:42+08:00

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

    • 0
  7. Ian Boyd
    2009-07-29T06:13:40+08:002009-07-29T06:13:40+08:00

    我的回答是: 有32 位版本的 mstsc.exe 吗?我假设 64 位 Windows 附带的 mstsc 是 mstsc 的 64 位版本。

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

    另一个例子:如果你想为 64 位 Windows Explorer 编写一个 shell 扩展,它必须是一个 64 位的 dll。没有 32 位版本的 Windows 资源管理器。您要么支持 64 位 Windows,要么不支持。

    • 0

相关问题

  • 如何远程远程单个应用程序,而不是整个桌面

  • 如何使用组策略禁用远程打印机

  • Windows Vista 有应用程序级远程处理还是我产生了幻觉?

  • 远程桌面从本地资源中选择哪台打印机

  • 如何通过 Internet 与其他几个用户共享 Windows 桌面?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve