2012-03-17 44 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,但它的工作原理。