FIX: SetEntriesInAcl() May Produce Undesired Results

Article translations Article translations
Article ID: 168574 - View products that this article applies to.
This article was previously published under Q168574
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all


As described in the Win32 Programmer's Reference, the SetEntriesInAcl() function creates a new access-control list (ACL) by merging new access-control or audit-control information into an existing ACL.

When you perform this merge operation on a container object ACL, SetEntriesInAcl() occasionally discards inheritance flags. You will notice this by closely examining the object ACL before and after calling SetEntriesInAcl().


When you merge like entries, SetEntriesInAcl() often ignores dissenting inherit flags.


If an application needs to modify ACL information and needs to produce reliable results on any version of Windows NT 4.0 prior to Service Pack 3, you should use the APIs documented in the Win32 Programmer's Reference under the section titled "Low-Level Access Control Functions".


Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.


Article ID: 168574 - Last Review: February 24, 2014 - Revision: 3.1
  • Microsoft Win32 Application Programming Interface, when used with:
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
kbnosurvey kbarchive kbacl kbapi kbbug kbfix kbkernbase kbsecurity KB168574

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from