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

使用Python设置Windows XP注册表项权限,python,windows,Python,Windows,我的一个客户用软管冲洗了他们登记处的一部分。出于某种原因,HKEY_类_根目录下的一组子键没有设置权限。因此,我将浏览这些键并手动设置这些键: 将管理员添加为组 将管理员设置为所有者 可能需要设置数千个这样的密钥,每个密钥需要10-12个步骤。因此,我想通过Python自动化这个过程。是否有一个模块可以同时完成这两个任务 谢谢 经过几乎一整天的研究,我使用windows注册表和权限的解决方案是使用。您可以使用COM对象,也可以使用二进制文件和子流程模块。 以下是我在代码中使用的一个片段,用于在混

我的一个客户用软管冲洗了他们登记处的一部分。出于某种原因,HKEY_类_根目录下的一组子键没有设置权限。因此,我将浏览这些键并手动设置这些键:

  • 将管理员添加为组
  • 将管理员设置为所有者
  • 可能需要设置数千个这样的密钥,每个密钥需要10-12个步骤。因此,我想通过Python自动化这个过程。是否有一个模块可以同时完成这两个任务


    谢谢

    经过几乎一整天的研究,我使用windows注册表和权限的解决方案是使用。您可以使用COM对象,也可以使用二进制文件和子流程模块。 以下是我在代码中使用的一个片段,用于在混合环境中修改权限(我有50台Windows计算机,分别具有32位和64位,以及Windows 7和Windows XP pro…):


    所以,它不是真正的纯Python,但它可以工作

    看看@JoranBeasley,_winreg模块的文档记录很差。Windows注册表的一般情况也是如此。雷德蒙的人创造了一个他们甚至都不完全理解的野兽。。。
    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()