zoukankan      html  css  js  c++  java
  • 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:WindowsSystem32systemlnk.lnk,它实际上会被重定向访问C:WindowsSysWOW64systemlnk.lnk这个文件,可能就不是你想要的结果了,解决这个问题,用(3)里面提到的关闭文件重定向的方式是可以可以解决的,另外一种方式就是这里提到的Hack方式,把C:WindowsSystem32systemlnk.lnk里面的System32换sysnative,变成C:Windowssysnativesystemlnk.lnk,那么就可以真正去访问C:WindowsSystem32systemlnk.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

  • 相关阅读:
    idea14导入eclipse项目并部署运行完整步骤
    Java之Socket
    Docker之宿主机ssh至docker容器
    ElasticSearch的安装、使用、踩坑
    Linux下grep、tail、wc、awk文件处理命令
    Spring中@Async注解实现“方法”的异步调用
    Thrift——栗子
    Linux中的守护进程——supervise
    【composer】 PHP composer 镜像地址更换
    【Mac】解决macos安装升级时报错安装所选更新时发生错误的问题
  • 原文地址:https://www.cnblogs.com/findumars/p/4908196.html
Copyright © 2011-2022 走看看