gpt4 book ai didi

c++ - x64 位 Windows 上的 ExpandEnvironmentStrings( ... ) 正在将 %programfiles% 扩展到 x86 路径

转载 作者:可可西里 更新时间:2023-11-01 09:47:31 25 4
gpt4 key购买 nike

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

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

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

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

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

我正在使用 Visual Studio 2015 进行开发。

最佳答案

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

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

Microsoft 在 WOW64 Implementation Details 记录了这一点.

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

另请参阅带有预定义 Windows Environment Variables 的维基百科文章.

关于c++ - x64 位 Windows 上的 ExpandEnvironmentStrings( ... ) 正在将 %programfiles% 扩展到 x86 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com