Windows 64 位中的 Sysnative 文件夹解释

Windows 64 位中的 Sysnative 文件夹解释

Windows 64 位中的 Sysnative 文件夹是一个虚拟文件夹,也是指向 64 位系统上的 System32 文件夹的别名。 它实际上并不存在于您的系统上。 这篇文章解释了Windows 中的 Sysnative 文件夹。

随着 64 位 Windows 7 的发布,Windows 目录中文件夹的正常分配发生了一些变化。 64 位版本的 Windows 11、Windows 10、Windows 8 和 Windows 7 中包含两个新文件夹。它们是系统原生和系统WOW64文件夹。 这仅适用于 64 位 Windows。 如果您在 64 位计算机上运行 32 位 Windows,您将看不到它们。 在 32 位计算机上运行 32 位 Windows 时,您也不会看到它们。

Windows目录之外还有一个文件夹,它的名字叫程序文件 (x86)。 我们习惯于存放程序可执行文件的文件夹 Program Files 的名称。 在 64 位系统中,64 位程序存储在 Program Files 文件夹中,而 32 位程序则存储在 Program Files (x86) 中。 然而,Windows 使用类似模拟的方式在 64 位计算机上运行 32 位程序。 因此,有必要了解和了解Windows(64位)下的系统文件夹是什么,以便您知道如何访问您想要的文件。

与 32 位机器不同,32 位 DLL 存储在System32文件夹,64位版本的Windows将与64位相关的DLL存储在System32文件夹中。 这是为了简化编程目的并提供向后兼容性。 也就是说,如果64位程序在其代码中引用System32,则在调用时会自动获取64位DLL。 这对开发人员很有帮助,因为他们不必更改 Windows 64 位程序中的代码。

简而言之,Windows 将所有 32 位 DLL 从 Windows 目录中的 System32 文件夹移动到其他文件夹,以便在升级到 64 位之后,即使使用 API,也无需重新编码以前的程序即可获取正确的 DLL。 当 32 位应用程序尝试访问 System32 文件夹时会出现此问题。 在这种情况下,程序将会崩溃,因为它不是为处理 64 位 DLL 而编写的。

读: 是什么黑豹文件夹?

Windows 64 位中的 SysWOW64 文件夹所有 32 位 DLL 均已移至新的SysWOW64文件夹在 64 位版本的 Windows 11、Windows 10、Windows 8 和 Windows 7 中,因此当 32 位程序调用 32 位 DLL 时,它们必须到达 SysWOW64 文件夹。

读:System32 和 SysWOW64 文件夹之间的区别

您可能会觉得开发人员必须扫描他们的程序和应用程序以将 DLL 函数指向 SysWOW64 文件夹。 但微软已经解决了这个问题。 如果调用的是 32 位程序C:\Windows\System32,模拟器会将路径重定向到C:\Windows\SysWOW64。 也就是说,要在Windows 64位中运行32位程序,需要使用模拟器,以便有适当的向后兼容性并避免调用DLL文件时出现错误。

在某些情况下,32 位程序或应用程序可能需要 64 位 DLL。 在这种情况下,您将必须使用重定向文件夹系统原生。 您可以将 SysNative 视为一个虚拟文件夹和指向 System32 文件夹的别名。 它本身并不存在于您的系统上。

所以如果你的32位程序需要访问64位DLL,不要使用C:\Windows\System32因为32位程序模拟器会将其带到名为SysWOW64的32位DLL文件夹中。 相反,使用C:\Windows\SysNative作为 DLL 程序的路径。 在路径中使用 Sysnative 会将其重定向到 System32 文件夹,而不是 SysWOW64 文件夹。

如果打开文件 Windows 资源管理器,您将在 C:\Windows 中找不到 Sysnative 文件夹。 即使您将文件夹选项设置为显示隐藏文件夹和系统文件夹。 这是因为,在 64 位 Windows 中运行时,Windows 文件资源管理器是 64 位程序,而 Sysnative 文件夹只能从 32 位程序中可见和访问。

总结:

System32 文件夹包含 64 位 DLL 文件。SysWOW64包含32位DLL文件,32位程序会自动重定向到该文件夹Sysnative是一个重定向文件夹,允许32位程序调用64位DLL。补充阅读:微软软件定义网络。

读: 是什么FOUND.000 文件夹?

相关阅读