WOW64:从32位进程获取x64%CommonProgramFiles%

时间:2010-03-29 16:54:37

标签: c++ winapi wow64

我尝试过的查询:ExpandEnvironmentStrings("%COMMONPROGRAMFILES%")GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON)

所有解析从我的32位应用程序(通常)c:\\Program Files (x86)\\Common Files。我需要检查(通常)在64位应用程序的c:\\Program Files\\Common Files下安装的文件版本。

3 个答案:

答案 0 :(得分:15)

在64位操作系统上,ProgramW6432环境变量指向c:\ program files。英文版Windows上32位应用程序的完整列表:

  • ProgramFiles => c:\ program files(x86)
  • ProgramFiles(x86)=> c:\ program files(x86)
  • ProgramW6432 => c:\ program files
  • CommonProgramFiles => c:\ program files(x86)\ common files
  • CommonProgramFiles(x86)=> c:\ program files(x86)\ common files
  • CommonProgramW6432 => c:\ program files \ common files

提醒一下:该文件夹不应包含32位程序感兴趣的任何内容。技术上。请注意文件系统重定向器,它会将文件请求从c:\ program files重定向到c:\ program files(x86)。如果您真的想要访问该目录中的文件,则必须使用Wow64DisableWow64FsRedirection()。

答案 1 :(得分:5)

%CommonProgramW6432%

答案 2 :(得分:-1)

static string ProgramFilesx86()
        {
            if (8 == IntPtr.Size
                || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
            {
                return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
            }

            return Environment.GetEnvironmentVariable("ProgramFiles");
        }

这是你需要的吗?