我的一个客户管理他们的部分注册表。出于某种原因,HKEY_CLASSES_ROOT下的一堆子键没有设置权限。所以我正在通过键并手动设置键:
可能需要设置数千个,并且每个键都需要10-12步。所以我想通过Python自动化这个过程。是否有可以完成这两个任务的模块?
谢谢!
答案 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,但它有效。