在 Windows 10 64 位系统中,32 位软件从 system32 文件夹而不是 syswow64 文件夹访问文件

在 Windows 10 64 位系统中,32 位软件从 system32 文件夹而不是 syswow64 文件夹访问文件

我在 Windows 10 64 位上安装了一个 32 位应用程序,它在系统管理员文件夹,但在运行时,它会访问system32文件夹,而不是系统管理员文件夹。

应用程序未正常运行。

我尝试重新安装并检查兼容性,但没有效果。

答案1

正如@RohitGupta 提到的,在 SysWow64 中安装 32 位 DLL 是标准程序,但您的应用程序使用 System32 中的 DLL 是错误的。通常,当 Windows 发现它正在运行 32 位应用程序时,它会进行本地目录替换,但在这种情况下,它显然没有这样做。根据我的经验,发生这种情况的最常见原因是如果基础应用程序与 CPU 无关,例如在 .Net 环境中作为托管代码运行。由于应用程序没有位宽要求,因此它使用 64 位版本的框架运行以提高效率,因此将尝试与 64 位 DLL 链接。您需要联系应用程序制造商并确认它是否使用.Net 框架或某些类似的虚拟化方案,并获取设置为使用 32 位 DLL 的应用程序版本 - .Net 框架具有可以在应用程序头中设置的位标志,以限制它使用 32 位 DLL 和 COM 对象。

编辑:对于 .Net 框架,设置必要标志位的工具被调用corflags.exe,并且应该可以与 Microsoft 的任何 Windows .Net 开发人员包一起使用。语法是corflags <executablename> /32bit+

答案2

尽管看起来很奇怪,但在 Windows 64 上,64 位文件位于system32(为了兼容性)。32 位文件位于系统管理员

这是一个例子。看一下 Processor 和 Flags 属性。

在此处输入图片描述

相关内容