После почти целого дня исследований мое решение для работы с реестром Windows и разрешениями заключается в использовании SetACL .Вы можете использовать COM-объект или использовать двоичный файл и модуль подпроцесса.Вот фрагмент из того, что я использовал в своем коде для изменения разрешений в смешанной среде (у меня ~ 50 машин с Windows на 32 и 64 бит, с Windows 7 и Windows XP pro ...):
from subprocess import Popen, PIPE
def Is64Windows():
'''check if win64 bit'''
return 'PROGRAMFILES(X86)' in os.environ
def ModifyPermissions():
"""do the actual key permission change using SetACL"""
permissionCommand = r'SetACL.exe -on "HKLM\Software\MPICH\SMPD"'\
+' -ot reg -actn ace -ace "n:Users;p:full"'
permissionsOut = Popen(permissionCommand, stdout = PIPE, stderr = PIPE)
pout, perr = permissionsOut.communicate()
if pout:
print pout
sys.exit(0)
elif perr:
print perr
sys.exit(1)
def main():
... some code snipped ...
os.chdir('SetACL')
if Is64Windows():
os.chdir('x64')
ModifyPermissions()
else:
os.chdir('x86')
ModifyPermissions()
Итак, это не совсем чистый Python, но он работает.