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

FFM*_*FMG 2 c++ windows environment-variables visual-studio-2015

我有一个在x64版本的Windows 10 上运行的x86应用程序.

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

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

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

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

我正在开发Visual Studio 2015.

IIn*_*ble 6

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

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

Microsoft在WOW64实现细节中记录了这一点.

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

另请参阅包含预定义Windows环境变量的 Wikipedia文章.