我在 x64 版本的Windows 10上运行了 x86 应用程序。
在我的应用中,我使用ExpandEnvironmentStrings(...)来扩展用户给定的值。
但当变量%programfiles%时,它会扩展为 C:\ Program Files(x86)
我是否需要做一些特别的事情才能让x86应用程序正确扩展程序文件变量?
NB :当我在资源管理器中直接使用%programfiles%时,它会正确扩展为 C:\ Program Files 。
我正在使用Visual Studio 2015进行开发。
答案 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的维基百科文章。