我正在编写一个跨平台的Python脚本,如果平台是NT,则需要知道Cygwin是否安装以及安装位置。目前,我只是使用了一种简单的方式来检查默认安装路径'C:\Cygwin'是否存在。我希望能够通过程序确定安装路径。
由于Cygwin不再将其挂载点存储在注册表中,因此似乎无法使用Windows注册表。因此,有可能通过编程方式获取Cygwin的安装路径吗?
仅适用于Cygwin 1.7:
您需要同时检查HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE的Cygwin注册表键。根据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。
这就是我会做的。Cygwin 驱动器挂载点有注册表项:
你可以使用 _winreg 模块(或在 Python 3.0 中使用 winreg 模块)来查找值:您可以使用 HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup\rootdir
值来安装 Cygwin 1.7