我的一个客户泄露了他们registry的一部分。 出于某种原因,HKEY_CLASSES_ROOT下的一组子键没有设置权限。 所以我正在通过按键和手动设置键:
有可能有成千上万的这些需要设置,这是一个10-12步骤的过程,为每个关键。 所以我想通过Python自动化这个过程。 有没有一个模块可以完成这两个?
谢谢!
经过将近一整天的研究,我使用Windows注册表和权限的解决方案是使用SetACL 。 您可以使用COM对象,或使用二进制文件和子流程模块。 这里是我用我的代码修改混合环境中的权限(我有~50 Windows 32位和64位的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,但它的工作原理。