/// <summary> /// Gets the group SIDs associated with the current token. /// </summary> public unsafe static IEnumerable <GroupSidInformation> GetTokenGroupSids(AccessToken token) { List <GroupSidInformation> info = null; TokenInformationInvoke(token, TokenInformation.Groups, buffer => { TOKEN_GROUPS *groups = (TOKEN_GROUPS *)buffer; ReadOnlySpan <SID_AND_ATTRIBUTES> data = new ReadOnlySpan <SID_AND_ATTRIBUTES>(&groups->Groups, (int)groups->GroupCount); info = new List <GroupSidInformation>(data.Length); for (int i = 0; i < data.Length; i++) { info.Add(new GroupSidInformation(CopySid(data[i].Sid), (GroupSidAttributes)data[i].Attributes)); } }); return(info); }
public static extern int AdjustTokenGroups([NativeTypeName("HANDLE")] IntPtr TokenHandle, [NativeTypeName("BOOL")] int ResetToDefault, [NativeTypeName("PTOKEN_GROUPS")] TOKEN_GROUPS *NewState, [NativeTypeName("DWORD")] uint BufferLength, [NativeTypeName("PTOKEN_GROUPS")] TOKEN_GROUPS *PreviousState, [NativeTypeName("PDWORD")] uint *ReturnLength);
public static extern BOOL AdjustTokenGroups(HANDLE TokenHandle, BOOL ResetToDefault, [NativeTypeName("PTOKEN_GROUPS")] TOKEN_GROUPS *NewState, [NativeTypeName("DWORD")] uint BufferLength, [NativeTypeName("PTOKEN_GROUPS")] TOKEN_GROUPS *PreviousState, [NativeTypeName("PDWORD")] uint *ReturnLength);