32 位应用如何访问 64 位的 System32

本文详细解释了在64位Windows系统中,Sysnative文件夹如何作为32位应用与64位系统之间的桥梁,让32位应用能访问64位资源,同时介绍了System32和SysWOW64的区别以及Sysnative的特殊性。
摘要由CSDN通过智能技术生成

引入

在64位的Windows系统中,有个非常神秘的文件夹“Sysnative”,你无法通过 Explorer 去访问它,甚至你都无法找到它,但它却扮演了一个非常重要的角色。下面我们就来聊聊它。

32位和64位的Windows

在广泛使用X86架构的CPU时代,用的系统、应用都是32位的(可能32位还算高的),随着科技的发展,AMD X64 和 64位的Windows/应用逐渐出现在我们的生活中。64位Windows凭借其支持大内存的特性,迅速占领市场。

但早期几乎没什么64位的应用,如果在64位的操作系统上不兼容32位应用的话,可能会浪费了Windows生态近几十年的发展,所以在64位操作系统上兼容32位应用是必须要做的事。

那Windows是怎么来做的呢?

当你在64位的Windows上启动一个32位的应用的时候,一个32位的模拟器就会被叫起来执行这个32位的应用,这个模拟器会让这个应用认为自己运行在一个32位的Windows上,所有的功能都是可以正常使用的。看起来一切都可以正常的使用了,但是问题来了,如果这个应用要访问一些特殊文件夹呢?

在此之前,我们需要了解到Windows为了兼容32位应用做了一些特殊的文件夹:

这里需要提到的就是 System32 这个文件夹,别看他后面有个 32,实质上它是用来放64位应用的。(据说是因为以前的程序很多都是对 System32 硬编码的,所以微软为了方便各大开发者将32位应用迁移到64位就直接保留了这个名称);SysWOW64 其实是用来装32位应用的文件夹。WOW64 的全程是:Windows on Windows64。

好,回到我们刚才的那个问题,如果这个 32 位应用想要访问真实的 System32 文件夹了该怎么办?(直接在 32 位应用中访问 System32 文件夹会被重定向到 SysWOW64 文件夹去)

答案自然是:SysNative

比如我想在32位应用中访问到64位的 SystemSettingsAdminFlows.exe ,那我实质上在代码里面要写的应该是:%windir%/sysnative/SystemSettingsAdminFlows.exe

Sysnative 有什么特殊的?

  • 该文件夹其实是一个虚拟文件夹,不同于 WOW64 是一个真实存在的文件夹
  • Sysnative 不可见,很大一部分原因是因为 explorer.exe 是64位的应用
  • 因为有了 Sysnative ,也可以在32位应用的代码里面访问64位应用了
  • 注册表中也有类似 WOW64 的结构
  • 支持 Windows Vista 及其以上版本

参考链接:

  1. The 'Program Files (x86)' and 'SysWOW64' folders explained / Windows 64-bit (Technical Article)
  2. The 'Sysnative' folder in 64-bit Windows explained (Technical Article)
  3. File System Redirector - Win32 apps | Microsoft Learn

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值