x64 位 windows 上的 ExpandEnvironmentStrings( ... ) 正在将 %programfiles% 扩展到 x86 路径

ExpandEnvironmentStrings( ... ) on a x64 bit windows is expanding %programfiles% to x86 path

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

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

但是当变量是 %programfiles% 时它被扩展到 C:\Program Files (x86)

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

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

我正在 Visual Studio 2015 年开发。

当32位应用程序扩展环境变量引用%ProgramFiles%时,它总是获取默认包含32位应用程序程序文件夹的文件夹路径。但是这个环境变量引用扩展到文件夹路径,当从 64 位进程(例如 Windows Explorer)扩展时,默认情况下包含 64 位应用程序的程序文件夹。

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

Microsoft 在 WOW64 Implementation Details.

中对此进行了记录

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

另请参阅包含预定义 Windows Environment Variables 的维基百科文章。