2012-03-17 88 views
0

我的一个客户端泄露了部分注册表。出于某种原因,HKEY_CLASSES_ROOT下的一组子键没有设置权限。所以,我打算通过按键手动设置键这样:使用Python设置Windows XP注册表项权限

  1. 添加管理员为一组
  2. 的管理员组作为所有者

可能有数千个的这些需要被设置这是每个关键的10-12步骤过程。所以我想通过Python自动化这个过程。有没有一个模块可以完成这两个?

谢谢!

+2

看看 http://docs.python.org/library/_winreg.html – 2012-03-17 21:02:36

+0

@JoranBeasley,_winreg模块记录不完整。一般来说,关于Windows注册表的情况就是如此。雷德蒙德的人创造了一个他们甚至都不了解的野兽...... – Oz123 2012-05-16 11:44:11

回答

1

经过近一整天的研究,我使用windows注册表和权限的解决方案是使用SetACL。您可以使用COM对象,或使用二进制文件和子流程模块。 下面是我在我的代码来修改在混合环境中的权限使用的片段(我有32位和64位〜50台Windows机器,与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,但它的工作原理。