x64系统的判断和x64下文件和注册表访问的重定向——补记

      原来的地址

        x64系统的判断和x64下文件和注册表访问的重定向(1)

        x64系统的判断和x64下文件和注册表访问的重定向(2)

        x64系统的判断和x64下文件和注册表访问的重定向(3)

 

        之前在(3)里面讨论过%ProgramFiles%这个环境变量的指向问题,其实在x64环境下面还有两个环境变量可以使用:%ProgramFiles(x86)%和%ProgramW6432%,如果你的系统安装在C盘,那么对应关系是这样的(注32位系统只有%ProgramFiles%,这里不讨论):

 

  %ProgramFiles% %ProgramFiles(x86)% %ProgramW6432%
32位程序 C:\Program Files (x86) C:\Program Files (x86) C:\Program Files
64位程序 C:\Program Files C:\Program Files (x86) C:\Program Files

 

 

        分享一个有意思的文件重定向问题,在Wow环境(也就是32位程序运行在64位系统下)下,通过一种特殊的Hack方式可以规避文件重定向。想象这样一种场景,如果你的32位程序在64位系统想访问C:\Windows\System32\systemlnk.lnk,它实际上会被重定向访问C:\Windows\SysWOW64\systemlnk.lnk这个文件,可能就不是你想要的结果了,解决这个问题,用(3)里面提到的关闭文件重定向的方式是可以可以解决的,另外一种方式就是这里提到的Hack方式,把C:\Windows\System32\systemlnk.lnk里面的System32换sysnative,变成C:\Windows\sysnative\systemlnk.lnk,那么就可以真正去访问C:\Windows\System32\systemlnk.lnk了,也不用去关闭文件重定向了。

        注:32位系统下的32位程序和64位系统下64位程序不要用这种方式。

 

[cpp] view plain copy
 
    1. // -------------------------------------------------------------------------  
    2. // 函数     : KWow64FsRedrt::IsWow64Process  
    3. // 功能     : 判断是否运行在Wow模式  
    4. // 返回值   : BOOL   
    5. // 附注     : 也就是32位程序运行在64位系统,而64位程序调用这个函数返回FALSE  
    6. // -------------------------------------------------------------------------  
    7. BOOL KWow64FsRedrt::IsWow64Process()  
    8. {  
    9.     BOOL bIsWow64 = FALSE;  
    10.   
    11.     typedef BOOL (WINAPI *PF_ISWOW64PROCESS)(HANDLE, PBOOL);  
    12.     PF_ISWOW64PROCESS pfIsWow64Process = (PF_ISWOW64PROCESS)::GetProcAddress(  
    13.         GetModuleHandle(_T("kernel32.dll")), "IsWow64Process");  
    14.     if (pfIsWow64Process)  
    15.     {  
    16.         if (!pfIsWow64Process(GetCurrentProcess(), &bIsWow64))  
    17.         {  
    18.             // handle error  
    19.         }  
    20.     }    
    21.   
    22.     return bIsWow64;  
    23. }  

 

http://blog.csdn.net/magictong/article/details/41082663

posted @ 2015-10-25 07:35  findumars  Views(345)  Comments(0)    收藏  举报