В продукте есть функционал по обновлению стороннего софта. Для большинства обновлений требуются права администратора. В этом случае пользователю выдается стандартный виндовый диалог ввода учетки и пароля.
Стоит задача понять, что пользователь имеет права локального админа (и стало быть способен произвести обновление софта).
Желательно сделать проверку без привлечения лишних (особенно сторонних) либ.
Как проще всего это сделать?
На входе есть имя учетки (включая домен или имя компа) и пароль.
Нашел вот такой пусть:
bool valid = false;
using (var context = new PrincipalContext(ContextType.Machine))
{
valid = context.ValidateCredentials(userName, password);
var grp = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Administators");
var user = UserPrincipal.FindByIdentity(context, userName);
foreach (Principal p in user.GetAuthorizationGroups())
{
Debug.WriteLine(p);
if (p.ToString() == "Administrators")
{
// Administrator
}
}
}
Но как-то перебором искать так себе идея. Плюс приходится использовать нюгет-пакет System.DirectoryServices.AccountManagement, что добавляет лишнего веса и хлопот.