我正在编写一个跨平台的python脚本,如果平台是NT,需要知道是否以及在何处安装了Cygwin。现在,我只是使用一个天真的检查存在默认安装路径'C:\ Cygwin'。我希望能够以编程方式确定安装路径。在Python脚本中获取Cygwin安装路径
Windows注册表似乎不是一个选项,因为Cygwin不再将其挂载点存储在注册表中。因此,它甚至有可能以编程方式获取Cygwin安装路径?
我正在编写一个跨平台的python脚本,如果平台是NT,需要知道是否以及在何处安装了Cygwin。现在,我只是使用一个天真的检查存在默认安装路径'C:\ Cygwin'。我希望能够以编程方式确定安装路径。在Python脚本中获取Cygwin安装路径
Windows注册表似乎不是一个选项,因为Cygwin不再将其挂载点存储在注册表中。因此,它甚至有可能以编程方式获取Cygwin安装路径?
仅适用于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。
这就是我要做的。有注册表项cygwin的驱动器安装点:
http://www.cygwin.com/ml/cygwin/2004-12/msg00200.html
您可以使用(在Python 3.0或WinReg项)模块_winreg看值了:
cygwin 1.7不再使用注册表安装点。 – an0nym0usc0ward 2009-12-18 21:25:59
是否有另一种方式获取Cygwin的安装路径,因为它不再在注册表中存储安装点? – csnullptr 2009-12-19 00:31:52