发布于 2020-01-15 06:32:44
由于没有人回答这个问题,我想我应该分享我使用pywin32库在给定密钥上设置权限的解决方案:
import win32con as con
import win32api
import ntsecuritycon as ntc
import pywintypes
import win32security
key = win32api.RegOpenKey(con.HKEY_LOCAL_MACHINE, 'Software\\MyKey', 0, con.KEY_ALL_ACCESS)
ksd = win32api.RegGetKeySecurity(key, con.DACL_SECURITY_INFORMATION)
acl = pywintypes.ACL()
acl.AddAccessAllowedAce(ntc.GENERIC_ALL, win32security.ConvertStringSidToSid('S-1-5-18'))
acl.AddAccessAllowedAce(ntc.GENERIC_ALL, win32security.ConvertStringSidToSid('S-1-5-32-544'))
ksd.SetDacl(True, acl, False)
win32api.RegSetKeySecurity(key, con.DACL_SECURITY_INFORMATION, ksd)这会将SYSTEM和Administrators的HKLM\SOFTWARE\MyKey密钥权限设置为FULL CONTROL,但没有其他组具有读或写访问权限。请注意,在我们对ksd变量运行.SetDacl()之前,该变量中都有原始的ACL,所以如果您想在操作后写回原始权限,只需先将其备份到另一个变量,如ksd_bac,然后在操作后运行win32api.RegSetKeySecurity(key, con.DACL_SECURITY_INFORMATION, ksd_bac)。
https://stackoverflow.com/questions/43833089
复制相似问题