![如何禁用 32 位程序的 Program Files 重定向(出于测试目的)?](https://linux22.com/image/783870/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%2032%20%E4%BD%8D%E7%A8%8B%E5%BA%8F%E7%9A%84%20Program%20Files%20%E9%87%8D%E5%AE%9A%E5%90%91%EF%BC%88%E5%87%BA%E4%BA%8E%E6%B5%8B%E8%AF%95%E7%9B%AE%E7%9A%84%EF%BC%89%EF%BC%9F.png)
客户设法设置了他们的 Windows 服务器,因此Program Files
->Program Files (x86)
不会发生在 32 位应用程序中。其他Windows\System32
->Windows\Syswow64
和HKLM\SOFTWARE
->重定向HKLM\SOFTWARE\Wow6432Node
仍然有效。
我非常确信他们没有在所有地方注入 DLL,Wow64DisableWow64FsRedirection
但确实有一些我从未听说过的魔法在起作用。不幸的是,客户也不知道。服务器管理员不知道 32 位磁盘路径重定向,只知道注册表。
我真的很想知道这是如何做到的,这样我就可以研究这种行为的动态。我们的应用程序对文件夹重定向非常敏感,通常C:\Program Files
由于它而无法工作;但不知何故,这位客户设法避开了 32 位重定向和 UAC 重定向。我怀疑后者是因为前者,而 UAC 重定向根本不存在,C:\Program Files
只有C:\Program Files (x86)
。
我无法直接检查 64 位 Program Files 目录是什么,但 32 位Program Files
目录是C:\Program Files (x86)
。
我们自己的安装程序是 32 位的(大多数软件都编译为 .NET Any CPU,因此相同的安装包适用于两者。)在我的计算机上测试的结果是尝试安装,实际上C:\Program Files
安装C:\Program Files (x86)
如预期(但是应用程序无法正常工作,因为安装目录注册表项对于 64 位视图设置错误)。
他们的服务器上发生了一些奇怪的事情,他们正在打开支持请求,我真的不想在没有真正证据的情况下告诉他们重建他们的环境,特别是因为我不知道是什么让它首先工作。更改安装路径可能实际上没有帮助。我的理解是,只要 32 位应用程序(例如 MS Office——由于 Access DB 原因,他们只能使用 32 位 MS Office)尝试从中加载 dll,这就会崩溃。请C:\Program Files\Common Files
注意,我们的应用程序也有 32 位组件;32 位可执行文件可以C:\Program Files
在其环境中启动和加载 dll。
操作系统是 Windows Server 2016 或 2019。
是的,我通常会认为尝试这样做是个坏主意。如果我可以测试一下,看看有多糟糕,我会处于更好的位置。
请不要告诉我这不可能。我见过有人这么做。但我不知道怎么做。