[DllImport("advapi32.dll", CharSet=CharSet.Auto)]
static extern uint SetEntriesInAcl(
uint cCountOfExplicitEntries,
EXPLICIT_ACCESS[] pListOfExplictEntries,
IntPtr OldAcl,
out IntPtr NewAcl);
Declare Function SetEntriesInAcl Lib "advapi32.dll" (( _
ByVal cCountOfExplicitEntries As Integer, _
ByRef pListOfExplicitEntries As EXPLICIT_ACCESS, _
ByVal OldAcl As IntPtr, _
ByRef NewAcl As IntPtr) As Integer
Returns ERROR_SUCCESS on success or an error code on failure. The new ACL must be freed with LocalFree.
Please add some!
Please add some!
Private Const SET_ACCESS = 2&
' Inheritance Flags
Private Const CONTAINER_INHERIT_ACE = &H2
Private Const OBJECT_INHERIT_ACE = &H1
Dim pNewDACL, pOldDACL As IntPtr
Dim ea As EXPLICIT_ACCESS
Dim Win32Error As Win32Exception
Dim ret, iPerm As Integer
' build an explicit access structure
BuildExplicitAccessWithName(ea, strUserName, iPerm, SET_ACCESS, CONTAINER_INHERIT_ACE Or OBJECT_INHERIT_ACE)
' merge this Explict Access with the existing DACL
ret = SetEntriesInAcl(1, ea, pOldDACL, pNewDACL)
If ret <> 0 Then
Win32Error = New Win32Exception(ret)
Throw New Exception(Win32Error.Message)
End If
Do you know one? Please contribute it!