@msdn=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/$$$.asp @pinvoke=http://pinvoke.net/$$$.htm Summary: Allocates and initializes a security identifier (SID) with up to eight subauthorities. !!!!C# Signature: [DllImport("advapi32.dll", SetLastError=true)] static extern bool AllocateAndInitializeSid( ref SidIdentifierAuthority pIdentifierAuthority, byte nSubAuthorityCount, int dwSubAuthority0, int dwSubAuthority1, int dwSubAuthority2, int dwSubAuthority3, int dwSubAuthority4, int dwSubAuthority5, int dwSubAuthority6, int dwSubAuthority7, out IntPtr pSid); !!!!VB Signature: Declare Function AllocateAndInitializeSid Lib "advapi32.dll" ( _ ByVal pIdentifierAuthority As IntPtr, _ ByVal nSubAuthorityCount As Byte, _ ByVal dwSubAuthority0 As Integer, ByVal dwSubAuthority1 As Integer, _ ByVal dwSubAuthority2 As Integer, ByVal dwSubAuthority3 As Integer, _ ByVal dwSubAuthority4 As Integer, ByVal dwSubAuthority5 As Integer, _ ByVal dwSubAuthority6 As Integer, ByVal dwSubAuthority7 As Integer, _ ByRef pSid As IntPtr) As Boolean !!!!User-Defined Types: None. !!!!Notes: The returned SID must be freed with FreeSid. You will need to reference System.Runtime.InteropServices !!!!Tips & Tricks: Please add some! !!!!C# Sample Code: [StructLayout(LayoutKind.Sequential)] public struct SidIdentifierAuthority { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)] public byte[] Value; } const int NtSecurityAuthority = 5; const int AuthenticatedUser = 11; SidIdentifierAuthority NtAuthority = new SidIdentifierAuthority(); NtAuthority.Value = new byte[] { 0, 0, 0, 0, 0, NtSecurityAuthority }; IntPtr AuthenticatedUsersSid = IntPtr.Zero; // Get the SID for the Authenticated Uses group Native.AllocateAndInitializeSid(ref NtAuthority, 1, AuthenticatedUser, 0, 0, 0, 0, 0, 0, 0, out AuthenticatedUsersSid); // Remember to free the SID when you are done Native.FreeSid(AuthenticatedUsersSid); !!!!Vb.Net Sample Code: Structure SID_IDENTIFIER_AUTHORITY <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Dim Value() As Byte End Structure Const SECURITY_NT_AUTHORITY As Integer = 5 Const SECURITY_BUILTIN_DOMAIN_RID As Integer = 32 Const DOMAIN_ALIAS_RID_ADMINS As Integer = 544 Dim AdminGroup as IntPtr Dim NtAuthority As SID_IDENTIFIER_AUTHORITY ReDim NtAuthority.Value(6) NtAuthority.Value(5) = SECURITY_NT_AUTHORITY If Not AllocateAndInitializeSid(NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, AdminGroup) Then MsgBox("Yikes, couldn't create the Local Admininstrator Group's SID") Exit Sub End If !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: AllocateAndInitializeSid@msdn on MSDN
Edit advapi32.Allocate...
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.