使用Python设置Windows XP注册表项权限
我的一个客户用软管冲洗了他们登记处的一部分。出于某种原因,HKEY_类_根目录下的一组子键没有设置权限。因此,我将浏览这些键并手动设置这些键:使用Python设置Windows XP注册表项权限,python,windows,Python,Windows,我的一个客户用软管冲洗了他们登记处的一部分。出于某种原因,HKEY_类_根目录下的一组子键没有设置权限。因此,我将浏览这些键并手动设置这些键: 将管理员添加为组 将管理员设置为所有者 可能需要设置数千个这样的密钥,每个密钥需要10-12个步骤。因此,我想通过Python自动化这个过程。是否有一个模块可以同时完成这两个任务 谢谢 经过几乎一整天的研究,我使用windows注册表和权限的解决方案是使用。您可以使用COM对象,也可以使用二进制文件和子流程模块。 以下是我在代码中使用的一个片段,用于在混
谢谢 经过几乎一整天的研究,我使用windows注册表和权限的解决方案是使用。您可以使用COM对象,也可以使用二进制文件和子流程模块。 以下是我在代码中使用的一个片段,用于在混合环境中修改权限(我有50台Windows计算机,分别具有32位和64位,以及Windows 7和Windows XP pro…):
所以,它不是真正的纯Python,但它可以工作 看看@JoranBeasley,_winreg模块的文档记录很差。Windows注册表的一般情况也是如此。雷德蒙的人创造了一个他们甚至都不完全理解的野兽。。。
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()