GetNamedSecurityInfo (advapi32)
Last changed: 192.168.101.2

.
Summary
The GetNamedSecurityInfo function retrieves a copy of the security descriptor for an object specified by name.

C# Signature:

[DllImport("advapi32.dll", SetLastError=true)]
static extern UInt32 GetNamedSecurityInfo
   (string pObjectName,
    int ObjectType,
    int SecurityInfo,
    out IntPtr pSidOwner,
    out IntPtr pSidGroup,
    out IntPtr pDacl,
    out IntPtr pSacl,
    out IntPtr pSecurityDescriptor);

VB Signature:

Declare Function GetNamedSecurityInfo Lib "advapi32.dll" ( _
    ByVal pObjectName As String, _
    ByVal ObjectType As Integer, _
    ByVal SecurityInfo As Integer, _
    ByRef pSidOwner As IntPtr, _
    ByRef pSidGroup As IntPtr, _
    ByRef pDacl As IntPtr, _
    ByRef pSacl As IntPtr, _
    ByRef pSecurityDescriptor As IntPtr) As Integer

User-Defined Types:

None.

Notes:

Definition from the API:

    DWORD GetNamedSecurityInfo(
      LPTSTR pObjectName,
      SE_OBJECT_TYPE ObjectType,
      SECURITY_INFORMATION SecurityInfo,
      PSID* pSidOwner,
      PSID* pSidGroup,
      PACL* pDacl,
      PACL* pSacl,
      PSECURITY_DESCRIPTOR* pSecurityDescriptor
    );

Tips & Tricks:

Please add some!

C# Sample Code:

Please add some!

VB.Net Sample Code:

    ' Type of Securable Object we are operating in this sample code
    Private Const SE_FILE_OBJECT = 1&

    ' The Security Information constants required
    Private Const DACL_SECURITY_INFORMATION = 4&

    Dim pSecDesc, pOldDACL As IntPtr
    Dim Win32Error As Win32Exception
    Dim ret As Integer

    ' get the Security Descriptor and DACL
    ret = GetNamedSecurityInfo(strPath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, Nothing, Nothing, pOldDACL, Nothing, pSecDesc)
    If ret <> 0 Then
        Win32Error = New Win32Exception(ret)
        Throw New Exception(Win32Error.Message)
    End If

Alternative Managed API:

Do you know one? Please contribute it!

Documentation