gpt4 book ai didi

delphi - 解决来自 Win64 操作系统中 32 位应用程序的 PROGRAMFILES 变量?

转载 作者:行者123 更新时间:2023-12-03 18:15:47 25 4
gpt4 key购买 nike

正如 MSDN 的 WOW64 Implementation Details 中所述,变量 %PROGRAMFILES% ,

  • 在 64 位 Windows 操作系统上的 32 位进程中,解析为 C:\Program Files (x86)
  • 在 64 位 Windows 操作系统上的 64 位进程中,解析为 C:\Program Files

  • 您可以验证这一点,例如使用 Delphi 10.1 程序,使用 32 位 Windows 目标平台和 64 位 Windows 目标平台编译:
    MyShellExecute('%PROGRAMFILES%');

    因此,从在 Windows 64 位操作系统中执行的 32 位 Delphi 应用程序中,我怎样才能获得两者:
  • 32 位程序的 ProgramFiles 目录 ( C:\Program Files (x86) )
  • 64 位程序的 ProgramFiles 目录 ( C:\Program Files )
  • 最佳答案

    使用以下环境变量:

  • ProgramW6432获取64位程序文件目录。
  • ProgramFiles(x86)获取32位程序文件目录。

  • 它们在 32 位和 64 位进程中返回相同的值。

    当然,依赖环境变量总是有点脆弱。您的父流程总是有可能在创建您的流程之前修改这些变量。

    为了让你的程序更健壮,你应该使用 known folder IDs反而。使用 FOLDERID_ProgramFilesX64FOLDERID_ProgramFilesX86 .

    关于delphi - 解决来自 Win64 操作系统中 32 位应用程序的 PROGRAMFILES 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691260/

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