Получить путь установки Cygwin в скрипте Python - PullRequest
3 голосов
/ 18 декабря 2009

Я пишу кросс-платформенный скрипт на python, который должен знать, где и где установлен Cygwin, если платформа NT. Прямо сейчас я просто использую наивную проверку на наличие пути установки по умолчанию 'C: \ Cygwin'. Я хотел бы иметь возможность программно определять путь установки.

Реестр Windows не представляется возможным, поскольку Cygwin больше не сохраняет свои точки монтирования в реестре. Из-за этого возможно ли программно получить путь установки Cygwin?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Действительно только для Cygwin 1.7:

Вам необходимо проверить и HKEY_CURRENT_USER, и HKEY_LOCAL_MAHINE для ключа реестра 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.

1 голос
/ 18 декабря 2009

Я бы так и сделал. Для точек монтирования диска cygwin есть записи реестра:

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

Вы можете использовать модуль _winreg (или winreg в python 3.0) для просмотра значений:

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

0 голосов
/ 02 апреля 2010

Вы можете использовать значение HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup\rootdir для Cygwin 1.7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...