x64位窗口上的ExpandEnvironmentStrings(...)正在将%programfiles%扩展为x86路径

时间:2016-02-22 21:44:37

标签: c++ windows visual-studio-2015 environment-variables

我在 x64 版本的Windows 10上运行了 x86 应用程序。

在我的应用中,我使用ExpandEnvironmentStrings(...)来扩展用户给定的值。

但当变量%programfiles%时,它会扩展为 C:\ Program Files(x86)

我是否需要做一些特别的事情才能让x86应用程序正确扩展程序文件变量?

NB :当我在资源管理器中直接使用%programfiles%时,它会正确扩展为 C:\ Program Files

我正在使用Visual Studio 2015进行开发。

1 个答案:

答案 0 :(得分:6)

当32位应用程序扩展环境变量引用%ProgramFiles%时,它总是获取默认包含32位应用程序的程序文件夹的文件夹路径。但是,此环境变量引用扩展为文件夹路径,默认情况下包含从64位进程(如Windows资源管理器)扩展时64位应用程序的程序文件夹。

必须使用环境变量引用%ProgramW6432%通过32位进程获取64位应用程序的程序文件文件夹路径。

Microsoft在WOW64 Implementation Details记录了这一点。

可以通过打开64位和32位命令提示符自行检查 - 键入%SystemRoot%\SysWoW64\cmd.exe以在64位系统上打开32位命令提示符。然后在命令提示符窗口中执行命令set以获取具有其当前值的环境变量的完整列表,或仅执行set prog以获取对字符串prog开始不区分大小写的环境变量列表名称及其价值。

另见预定义Windows Environment Variables的维基百科文章。