在Python脚本中获取Cygwin安装路径
我正在写一个跨平台的Python脚本,需要知道在NT平台上Cygwin是否安装,以及安装在哪里。目前我只是简单地检查默认安装路径'C:\Cygwin'是否存在。我想要能够通过程序来确定安装路径。
Windows注册表似乎不是一个好选择,因为Cygwin不再把它的挂载点存储在注册表里。因此,是否有可能通过程序获取Cygwin的安装路径呢?
3 个回答
0
你可以使用 HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup\rootdir
这个值来设置 Cygwin 1.7。
1
我会这样做。Cygwin的驱动器挂载点在注册表中有相关的条目:
http://www.cygwin.com/ml/cygwin/2004-12/msg00200.html
你可以使用 _winreg(在Python 3.0中叫winreg)模块来查找这些值:
2
仅适用于 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 的安装。