Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than advapi32, prefix the name with the module name and a period.
AllocateAndInitializeSid (advapi32)
.
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
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
Vb.Net Sample Code:
Structure SID_IDENTIFIER_AUTHORITY
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Dim Value() As Byte
End Structure
Dim AdminGroup as IntPtr
Dim NtAuthority As SID_IDENTIFIER_AUTHORITY
ReDim NtAuthority.Value(6)
NtAuthority.Value(5) = SECURITY_NT_AUTHORITY
Const SECURITY_NT_AUTHORITY As Integer = 5
Const SECURITY_BUILTIN_DOMAIN_RID As Integer = 32
Const DOMAIN_ALIAS_RID_ADMINS As Integer = 544
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
Dim AdminGroup as IntPtr
Dim NtAuthority As SID_IDENTIFIER_AUTHORITY
ReDim NtAuthority.Value(6)
NtAuthority.Value(5) = SECURITY_NT_AUTHORITY
Alternative Managed API:
Do you know one? Please contribute it!
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!
Frees a security identifier (SID) previously allocated by using the AllocateAndInitializeSid function.
11/3/2011 8:19:14 AM - -115.108.16.247
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).