WOW64:从32位进程获得x64%CommonProgramFiles%
我试过的查询:ExpandEnvironmentStrings("%COMMONPROGRAMFILES%")
,GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON)
。WOW64:从32位进程获得x64%CommonProgramFiles%
从我的32位应用程序中解析出(通常)c:\\Program Files (x86)\\Common Files
。我需要检查安装(通常)在64位应用程序的c:\\Program Files\\Common Files
下的文件版本。
在64位操作系统上,ProgramW6432环境变量指向C:\程序文件。完整的列表在英语版本的Windows的32位应用程序:
- PROGRAMFILES => C:\ Program Files文件(x86)的
- PROGRAMFILES(X86)=> C:\ Program Files文件(86)
- ProgramW6432 => C:\程序文件
- COMMONPROGRAMFILES => C:\程序文件(86)\公用文件
- COMMONPROGRAMFILES(86)=> C:\程序文件(86)\公用文件
- CommonProgramW6432 => c:\ program files \ common files
只是提醒一下:该文件夹不应包含32位程序感兴趣的任何内容。技术上。当心文件系统重定向器,它会将文件请求从c:\ program files重定向到c:\ program files(x86)。如果你真的想访问那个目录中的文件,你必须使用Wow64DisableWow64FsRedirection()。
static string ProgramFilesx86()
{
if (8 == IntPtr.Size
|| (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
}
return Environment.GetEnvironmentVariable("ProgramFiles");
}
这是你所需要的吗?
这肯定不像C++。也许C++/CLI,但我敢打赌C#猜测。 – 2010-03-29 21:25:02
我可以发誓我在标签上看到了C#。抱歉。 – 2010-03-29 21:41:37
我只是检查一个必需的(64位)应用程序已经安装。 – peterchen 2010-03-30 07:38:35