在用C++做一个文件遍历的时候发现,当我遍历C:Windowssystem32文件夹时,获取到的文件数目和实际总是对不上。在通过他人帮助后了解到了重定向这个概念,我百度了一下,下面为粘贴内容。
System32与SysWow64
在C:Windows目录下,存在System32和SysWOW64两个文件夹,而让人迷惑的是:
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的方式。
原文链接:https://blog.csdn.net/GG_SiMiDa/article/details/81328451
现在问题的根源已经找到了,当我的程序在访问system32时,系统将其重定向了,导致获取到的文件数与实际对不上。那么该怎么解决这一问题呢?
关闭重定向
在MSDN搜素了一下,发现了几个函数可以关闭/开启重定向(关闭后不开启,可能会导致其他未知问题)。
我用Wow64EnableWow64FsRedirection简单实验了一下,发现确实好用啊!
关于windows重定向暂时了解这些,之后会进行补充。代码地址为不要点这里啊喂 感兴趣的同学可以参考一哈。