@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetSidSubAuthorityCount function returns a pointer to the member in a security identifier (SID) structure containing the subauthority count !!!!C# Signature: [DllImport("advapi32.dll", SetLastError=true)] static extern TODO GetSidSubAuthorityCount(TODO); !!!!VB Signature: Declare Function GetSidSubAuthorityCount Lib "advapi32.dll" ( ByVal psid As IntPtr ) As IntPtr !!!!User-Defined Types: None. !!!!Notes: None. !!!!Tips & Tricks: Please add some! !!!!Sample Code: Dim numSubAuthorities As Byte = Runtime.InteropServices.Marshal.ReadByte(GetSidSubAuthorityCount(pSID), 0) ' ' a WinNT version of the ConvertSidToStringSid function ' Private Shared Function ConvertSidToStringSidNT(ByVal Sid As IntPtr) As String Dim sb As New StringBuilder Dim psia As SID_IDENTIFIER_AUTHORITY Dim i, num, temp As Integer Dim top As Long Dim iptr As IntPtr If Not IsValidSid(Sid) Then Return "" End If sb.Append("S-1-") ' Get the top level authority iptr = GetSidIdentifierAuthority(Sid) psia = CType(Marshal.PtrToStructure(iptr, GetType(SID_IDENTIFIER_AUTHORITY)), SID_IDENTIFIER_AUTHORITY) ' How many sub authorities? iptr = GetSidSubAuthorityCount(Sid) num = Marshal.ReadInt16(iptr) ' Use the hex version of the top authority? If psia.Value(0) <> 0 And psia.Value(1) <> 0 Then sb.AppendFormat("0x{0:x2}" & psia.Value(0) sb.AppendFormat("x{0:x2}" & psia.Value(1)) sb.AppendFormat("x{0:x2}" & psia.Value(2)) sb.AppendFormat("x{0:x2}" & psia.Value(3)) sb.AppendFormat("x{0:x2}" & psia.Value(4)) sb.AppendFormat("x{0:x2}" & psia.Value(5)) Else top = psia.Value(5) top += psia.Value(4) * 256 top += psia.Value(3) * 256 * 256 top += psia.Value(2) * 256 * 256 * 256 sb.Append(top.ToString) End If For i = 0 To num - 1 iptr = GetSidSubAuthority(Sid, i) temp = Marshal.ReadInt32(iptr) sb.Append("-" & temp.ToString) Next Return sb.ToString End Function !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: GetSidSubAuthorityCount@msdn on MSDN
Edit advapi32.GetSidSu...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.