使用Python设置Windows XP注册表项权限

时间:2012-03-17 20:58:36

标签: python windows

我的一个客户管理他们的部分注册表。出于某种原因,HKEY_CLASSES_ROOT下的一堆子键没有设置权限。所以我正在通过键并手动设置键:

  1. 将管理员添加为一个组
  2. 将管理员设置为所有者
  3. 可能需要设置数千个,并且每个键都需要10-12步。所以我想通过Python自动化这个过程。是否有可以完成这两个任务的模块?

    谢谢!

1 个答案:

答案 0 :(得分:1)

经过近一天的研究,我使用Windows注册表和权限的解决方案是使用SetACL。您可以使用COM对象,也可以使用二进制文件和子进程模块。 以下是我在代码中用于修改混合环境中权限的代码片段(我有大约50台Windows机器,32位和64位,Windows 7和Windows XP专业版......):

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,但它有效。