Я использую ActivePython 2.5 для чтения реестра для записей, которые делает pGina. В частности, записи о том, какие GID разрешены на компьютере. Эта информация может периодически меняться для каждого компьютера при редактировании через pGina, поэтому я хочу, чтобы мой скрипт Python мог каждый раз проверять эти значения.
Достаточно просто. Следующая команда Windows получит эту информацию для меня:
reg query HKLM\Software\pGina\ldapauth\
... кроме случаев, когда я запускаю его с Python, я получаю это:
>>> import subprocess
>>> command = 'reg query HKLM\Software\pGina\ldapauth'
>>> ldapauth = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE).communicate()[0]
ERROR: The system was unable to find the specified registry key or value.
Поэтому, когда я запускаю 'reg query HKLM \ Software' через Python, он выдает список ключей и значений в разделе HK CU \ Software, а не HKLM.
Я использую Python от имени администратора (подтверждено с помощью getpass.getuser ()), и когда я запускаю ту же команду из пакетного сценария, я получаю правильный список в HKLM. Однако когда я вызываю пакетный скрипт из Python, возвращаюсь к результатам ole 'HKCU.
Итак, я немного застрял. У кого-нибудь есть понимание?
РЕДАКТИРОВАТЬ: Как подробно описано ниже, я использую 64-битную Windows 7 и пробовал методы _winreg, включая необязательный 4-й аргумент «sam» в OpenKey.