TreeSetNamedSecurityInfo (advapi32)
Last changed: -81.218.2.70

.

The TreeSetNamedSecurityInfo function sets specified security information in the security descriptor of a specified tree of objects.

C# Signature:

[DllImport("advapi32.dll", EntryPoint = "TreeSetNamedSecurityInfoW", SetLastError = true, CharSet = CharSet.Unicode)]
static extern uint TreeSetNamedSecurityInfo(string pObjectName, SE_OBJECT_TYPE ObjectType, SecurityInformation SecurityInfo,
                        IntPtr pOwner, IntPtr pGroup, IntPtr pDacl, IntPtr pSacl, uint dwAction,
                        TreeSetNamedSecurityProgress fnProgress, PROGRESS_INVOKE_SETTING ProgressInvokeSetting, IntPtr Args);

// callback function
public delegate void TreeSetNamedSecurityProgress(IntPtr pObjectName, uint Status, IntPtr pInvokeSetting, IntPtr Args, Boolean SecuritySet);

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Boolean retref, present;

// calling the function

IntPtr pSidOwner = IntPtr.Zero;

IntPtr pSidGroup = IntPtr.Zero;

IntPtr pDacl = IntPtr.Zero;

IntPtr pSacl = IntPtr.Zero;

IntPtr pTemp = IntPtr.Zero;

IntPtr pArgs = IntPtr.Zero;

GetSecurityDescriptorGroup(pSecurityDescriptor, out pSidGroup , out retref);

GetSecurityDescriptorOwner(pSecurityDescriptor, out pSidOwner, out retref));

GetSecurityDescriptorDacl(pSecurityDescriptor, out present, out pDacl, out retref);

GetSecurityDescriptorSacl(pSecurityDescriptor, out present, out pSacl, out retref);

uint errorReturn = TreeSetNamedSecurityInfo(path, SE_OBJECT_TYPE.SE_FILE_OBJECT, si, pSidOwner, pSidGroup, pDacl, pSacl, TREE_SEC_INFO_SET, callback, PROGRESS_INVOKE_SETTING.ProgressInvokePrePostError, pArgs);

// handeling the callback

Documentation