使用 UserPrincipal 检查是否本地管理员

Ste*_*ing 4 c# admin active-directory active-directory-group userprincipal

我正在尝试使用一种方法,该方法接受用户名,如果该用户是本地管理员(不是整个域,只是本地计算机),则返回 true,否则返回 false。我试图改变在 .NET/C# 测试中找到的技术,如果进程有管理权限可以工作,但它没有。我曾尝试使用 NetUserGetInfo 方式,但无法使其正常工作。现在我正在尝试使用 UserPrincipal。下面的代码是我所拥有的全部……主要只是测试基础知识是否有效并且它们确实有效。

PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userId);

if(usr == null)
{
    Console.WriteLine("usr is null");
}
else
{
    Console.WriteLine(usr.Enabled);
    Console.WriteLine(usr.IsAccountLockedOut());

    foreach (Principal p in usr.GetAuthorizationGroups())
    {
        Console.WriteLine(p.ToString());   
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来我应该可以使用 isMemberOf 方法,但是如何为本地管理员创建一个组?或者有比 isMemberOf 方法更好的方法吗?

Ste*_*ing 5

好吧,实际上我只能检查从 GetAuthorizationGroups()) 返回的 Principals 之一是否等于“Administators”。

foreach (Principal p in usr.GetAuthorizationGroups())
{
    if (p.ToString() == "Administrators")
    {
        result = true;
    }
}
Run Code Online (Sandbox Code Playgroud)