Я написал эту функцию для извлечения всех идентификаторов безопасности членов администраторов:
private IList<byte[]> GetAdministratorsMembersSIDs()
{
IList<byte[]> adminMembers = new List<byte[]>();
SecurityIdentifier id = new SecurityIdentifier(administratorsSid);
string name = id.Translate(typeof(NTAccount)).Value.Split('\\')[1];
using (DirectoryEntry adminGroupEntry = new DirectoryEntry(string.Format("WinNT://./{0},group", name)))
{
foreach (object member in (IEnumerable)adminGroupEntry.Invoke("Members"))
{
using (DirectoryEntry memberEntry = new DirectoryEntry(member))
{
adminMembers.Add((byte[])memberEntry.InvokeGet("objectSid"));
}
}
}
return adminMembers;
}
В .NET Core 2.1 adminGroupEntry.Invoke("Members")
выброс System.PlatformNotSupportedException: IDispatch и IDispatchEx не поддерживаются .Кто-нибудь знает обходной путь, совместимый с .NET Core 2.1?
[EDIT] Ошибка исправлена в .NET Core 3.0