首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACE自动继承

ACE自动继承
EN

Stack Overflow用户
提问于 2013-08-26 22:02:36
回答 1查看 345关注 0票数 1

我想向注册表项添加ACE,但它不是通过子程序继承的。以下是VBScript代码:

代码语言:javascript
复制
Set sdUtil = CreateObject("ADsSecurityUtility")
S = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XXXX"
Set sd = sdUtil.GetSecurityDescriptor(S, ADS_PATH_REGISTRY, ADS_SD_FORMAT_IID)
Set oldDacl = sd.DiscretionaryAcl
Set dacl = CreateObject("AccessControlList")
dacl.AclRevision = ADS_REVISION_DS
dacl.AceCount = 0
'remove network service ace if it exists
For Each ace In oldDacl
    If UCase(ace.trustee) <> "NT AUTHORITY\NETWORK SERVICE" And UCase(ace.trustee) <> "S-1-5-20" Then
        ace.AceFlags = ace.AceFlags Or OBJECT_INHERIT_ACE Or CONTAINER_INHERIT_ACE
        dacl.AddAce ace
    End If
Next
'add the new network service ace
Set ace = CreateObject("AccessControlEntry")
ace.Trustee = "NT AUTHORITY\NETWORK SERVICE"
ace.AccessMask = KEY_ALL_ACCESS 
ace.AceFlags = OBJECT_INHERIT_ACE Or CONTAINER_INHERIT_ACE
ace.AceType = ADS_ACETYPE_ACCESS_ALLOWED
dacl.AddAce ace
If (sd.Control And SE_DACL_AUTO_INHERITED) <> 0 Then
    sd.Control = sd.Control Or SE_DACL_AUTO_INHERIT_REQ
End If
If (sd.Control And SE_SACL_AUTO_INHERITED) <> 0 Then
    sd.Control = sd.Control Or SE_SACL_AUTO_INHERIT_REQ
End If
If (sd.Control And SE_DACL_PROTECTED) <> 0 Then
    sd.Control = sd.Control Xor SE_DACL_PROTECTED
End If
ReorderDacl dacl 'This subroutine reorder dacl using w2k rules
sd.DiscretionaryAcl = dacl 
ret = sdUtil.SetSecurityDescriptor(S, ADS_PATH_REGISTRY, sd, ADS_SD_FORMAT_IID)

我还使用另一个例程来扫描所有子键,并删除除标记为ADS_ACEFLAG_INHERITED_ACE以外的所有ACE。

在代码执行之后,我得到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XXXX的子类只继承系统、管理员、每个人和受限的访问。它们是在父密钥上设置的,但是网络服务访问是在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XXXX上进行的,但没有传播到子程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-27 12:23:22

最后,我得到了已经存在的子键不会自动获得继承的ace,所以我必须手动和递归地用ADS_ACEFLAG_INHERITED_ACE或‘’ed将ace添加到所有的子键中。

虽然文档中说ADS_ACEFLAG_INHERITED_ACE是由系统设置的,但是也可以手动设置它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18453779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档