Windows重定向

System32与SysWow64

C:\Windows目录下,存在System32SysWOW64两个文件夹,而让人迷惑的是:

  • System32文件夹下存放的是64位DLL
  • SysWOW64文件夹下存放的是32位DLL

按照文件夹表面意思,System32应该存放32位dll,SysWoW64应该存放64位dll,微软为何要做出如此别扭的存放呢?
这都是为了兼容32位Windows系统造成的。

因为之前的32位机很多代码都是读写文件到System32目录下,而现在出现了64位机,如果按照System32存放32位dll,SysWoW64存放64位dll的方式,势必要修改以前的32位代码中的System32为SysWoW64,为了避免需要修改,干脆就采用了System32存放64位dll,SysWow64存放32位dll的方式。

重定向

而这样又会引发一个问题,64位程序可以直接从System32下读写64位dll了,但32位程序则需要从SysWow64下读写32位dll啊,同样我也不想修改程序中的System32,该怎么办?

这样微软就搞出来个System32重定向的机制,对程序中的%windir%/System32目录,根据编译目标(32位还是64位),重定向到对应目录,即编译32位程序重定向到SysWow64目录下,编译64位程序则还是System32目录。

于是如果你在程序中写出了类似代码:

// 注意需要以管理员权限运行,才有操作C:/Windows/System32的权限
FILE* fp = fopen("C:/Windows/System32/1.txt", "w");
if (fp){
    fputs("hello world!", fp);
    fclose(fp);
}

编译出32位程序,运行在64位Windows上,实际1.txt将被写入到SysWow64目录下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithewei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值