8

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

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

4

3 回答 3

16

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

  • ProgramFiles => c:\program 文件 (x86)
  • ProgramFiles(x86) => c:\program 文件 (x86)
  • ProgramW6432 => c:\程序文件
  • CommonProgramFiles => c:\program files (x86)\common files
  • CommonProgramFiles(x86) => c:\program 文件 (x86)\common 文件
  • CommonProgramW6432 => c:\程序文件\普通文件

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

于 2010-03-29T18:31:33.227 回答
5

%CommonProgramW6432%

于 2010-03-29T17:19:55.413 回答
-1
static string ProgramFilesx86()
        {
            if (8 == IntPtr.Size
                || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
            {
                return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
            }

            return Environment.GetEnvironmentVariable("ProgramFiles");
        }

这是你需要的吗?

于 2010-03-29T17:00:49.267 回答