【问题标题】:Get Cygwin installation path in a Python script在 Python 脚本中获取 Cygwin 安装路径
【发布时间】:2009-12-18 00:29:47
【问题描述】:

我正在编写一个跨平台的 python 脚本,如果平台是 NT,它需要知道 Cygwin 是否安装以及安装在哪里。现在我只是简单地检查默认安装路径“C:\Cygwin”是否存在。我希望能够以编程方式确定安装路径。

Windows 注册表似乎不是一个选项,因为 Cygwin 不再将它的挂载点存储在注册表中。因此,甚至有可能以编程方式获取 Cygwin 安装路径吗?

【问题讨论】:

    标签: python windows registry cygwin


    【解决方案1】:

    仅适用于 Cygwin 1.7:

    您需要检查 Cygwin 注册表项的 HKEY_CURRENT_USER 和 HKEY_LOCAL_MAHINE。根据 Cygwin 的安装方式,它可能位于任一键下。

    以下是如何使用当前用户查询值的示例。

    CYGWIN_KEY = "SOFTWARE\\Cygwin\\setup"
    hk_user = winreg.HKEY_CURRENT_USER
    key = winreg.OpenKey(hk_user, CYGWIN_KEY)
    root = winreg.QueryValueEx(key, "rootdir")[0]
    

    在编写脚本时,您可能应该首先检查全局 HKEY_LOCAL_MACHINE。但是,请记住,可以在一台机器上安装多个 Cygwin。

    【讨论】:

      【解决方案2】:

      这就是我要做的。有 cygwin 驱动器挂载点的注册表项:

      http://www.cygwin.com/ml/cygwin/2004-12/msg00200.html

      您可以使用 _winreg(或 python 3.0 中的 winreg)模块来查找值:

      http://docs.python.org/library/_winreg.html

      【讨论】:

      • cygwin 1.7 不再使用注册表作为挂载点。
      • 由于Cygwin不再在注册表中存储挂载点,是否有其他方法可以获取Cygwin的安装路径?
      【解决方案3】:

      您可以将HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup\rootdir 值用于Cygwin 1.7

      【讨论】:

      • 该密钥在我的机器上不存在。
      • 由于我的系统上安装了 cygwin 的方式,密钥实际上在 HKKEY_CURRENT_USER 下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多