[DllImport("advapi32.dll", SetLastError=true)]
static extern bool AllocateAndInitializeSid(
IntPtr pIdentifierAuthority,
byte nSubAuthorityCount,
int dwSubAuthority0, int dwSubAuthority1,
int dwSubAuthority2, int dwSubAuthority3,
int dwSubAuthority4, int dwSubAuthority5,
int dwSubAuthority6, int dwSubAuthority7,
out IntPtr pSid);
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
None.
The returned SID must be freed with FreeSid.
You will need to reference System.Runtime.InteropServices
Please add some!
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
Do you know one? Please contribute it!