代码之家  ›  专栏  ›  技术社区  ›  nerdfever.com

如何从32位Python访问64位Windows环境变量?

  •  3
  • nerdfever.com  · 技术社区  · 6 年前

    是否有某种相当简单的方法可以从32位Python读取64位Windows环境变量?

    例如,默认值

    os.environ['ProgramFiles']
    

    在32位环境中是r'C:\Program Files(这是os.environ在32位Python中报告的),但在64位环境中是r'C:\Program Files(x86)。

    我想从32位Python获得64位版本的变量。怎样

    ===================================================================

    这部分问题对那些迫不及待想说 “你为什么要这样做?” “这样做不是个好主意” ,而不是回答问题。

    我有充分的理由去问。我正在使用Python自动设置Windows框。它们可能运行32位或64位Windows,因此只有32位Python可以确保在这两种Windows上运行。但64位变量的值很重要,因为它们决定了某些文件应该放在哪里。

    而且,在您说“如果是32位Windows,只需将内容放入“C:\Program Files”或“C:\Program Files(x86)”之前,如果是64位Windows,请让我指出这些环境变量的存在是有原因的。虽然这些位置可能99%都是正确的,但用户可能已将这些文件夹移动到其他驱动器号或其他位置。

    如果没有人看,让环境变量告诉你事情的发展方向是没有意义的。:-)

    1 回复  |  直到 6 年前
        1
  •  4
  •   MatsLindh    6 年前

    您可以使用 ProgramW6432 获取的实际(64位)路径的环境变量 Program Files 如果您是在64位版本的Windows上运行的32位程序:

    ProgramFiles=C:\Program Files (x86)
    ProgramFiles(x86)=C:\Program Files (x86)
    ProgramW6432=C:\Program Files
    

    。。在32位操作系统下运行时,不会设置变量。

    在python中,类似于:

    path = os.environ['ProgramW6432'] if 'ProgramW6432' in os.environ else os.environ['ProgramFiles']
    

    。。应该按照你的意愿工作。