我有一个运行在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文章。

10-04 22:27
查看更多