0
我的一个客户端泄露了部分注册表。出于某种原因,HKEY_CLASSES_ROOT下的一组子键没有设置权限。所以,我打算通过按键手动设置键这样:使用Python设置Windows XP注册表项权限
- 添加管理员为一组
- 的管理员组作为所有者
可能有数千个的这些需要被设置这是每个关键的10-12步骤过程。所以我想通过Python自动化这个过程。有没有一个模块可以完成这两个?
谢谢!
我的一个客户端泄露了部分注册表。出于某种原因,HKEY_CLASSES_ROOT下的一组子键没有设置权限。所以,我打算通过按键手动设置键这样:使用Python设置Windows XP注册表项权限
可能有数千个的这些需要被设置这是每个关键的10-12步骤过程。所以我想通过Python自动化这个过程。有没有一个模块可以完成这两个?
谢谢!
经过近一整天的研究,我使用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,但它的工作原理。
看看 http://docs.python.org/library/_winreg.html – 2012-03-17 21:02:36
@JoranBeasley,_winreg模块记录不完整。一般来说,关于Windows注册表的情况就是如此。雷德蒙德的人创造了一个他们甚至都不了解的野兽...... – Oz123 2012-05-16 11:44:11