Установка разрешений для ключа реестра Windows XP с помощью Python - PullRequest
0 голосов
/ 18 марта 2012

Мой клиент сохранил часть своего реестра.По какой-то причине куча вложенных ключей в HKEY_CLASSES_ROOT не имеет установленных разрешений.Итак, я просматриваю ключи и вручную настраиваю их так:

  1. Добавить администраторов в группу
  2. Установить администраторов в качестве владельца

Естьпотенциально тысячи из них должны быть установлены, и для каждого ключа нужно выполнить 10-12 шагов.Поэтому я хочу автоматизировать процесс через Python.Есть ли модуль, который может выполнить обе эти функции?

Спасибо!

1 Ответ

1 голос
/ 16 мая 2012

После почти целого дня исследований мое решение для работы с реестром 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, но он работает.

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