我有一个运行在Windows 10的 x64 版本上的 x86 应用程序。
在我的应用程序中,我正在使用ExpandEnvironmentStrings(...)来扩展给定值的用户。
但是,当变量为%programfiles%时,它将扩展为 C:\Program Files(x86)
我需要做一些特别的事情来获得x86应用程序以正确扩展程序文件变量吗?
注意::当我直接在资源管理器中使用%programfiles%时,它会正确扩展为 C:\Program Files 。
我正在使用Visual Studio 2015进行开发。
最佳答案
当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的Wikipedia文章。