首页 > 其他 > 详细

syswow64与system32路径 映射

时间:2020-09-29 15:58:25      阅读:67      评论:0      收藏:0      [点我收藏+]

  最近,在工作中对古董代码考古挖掘,在此基础上添加新功能。在考古的调试时,发现对于 C:\windows\system32路径下某文件是否存在的判断总是错误,但实际情况是该文件确实存在。经过一阵Google,确认windows操作系统有系统文件映射的一个概念。

  windows\syswow64与windows\system32路径之间有映射关系,windows7系统对于这种映射的设置默认是开启的,即对于system路径的访问,默认是windows\syswow64,而不是windows\system32,除非关掉映射。

  一顿操作后,终于搞定,代码如下。原代码是c++/cli的,考虑到使用的人不多,改造成C#的,在此留个爪。

 

//关闭64位(文件系统)的操作转向
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
extern bool Wow64DisableWow64FsRedirection(IntPtr ptr);
//开启64位(文件系统)的操作转向
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);



IntPtr lastState = new IntPtr();
//关闭系统文件映射
if(Wow64DisableWow64FsRedirection(lastState ))
{
    //对 C:\windows\system32路径下的文件判断    
    if(File.Exists(Environment.SystemDirectory + "\\xxxx.sys"))
    {
         //dosomething....        
    }
}
//开启系统文件映射
Wow64RevertWow64FsRedirection(lastState);

 

syswow64与system32路径 映射

原文:https://www.cnblogs.com/danny-gao/p/13749744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!