其他分享
首页 > 其他分享> > CodeGo.net>使用UserPrincipal检查是否本地管理员

CodeGo.net>使用UserPrincipal检查是否本地管理员

作者:互联网

我正在尝试一种采用用户名的方法,如果该用户是本地管理员(不是整个域,仅是本地计算机),则将返回true,否则返回false.我试图将In .NET/C# test if process has administrative privileges处发现的技术更改为有效,但没有成功.我尝试使用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());   
    }
}

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

解决方法:

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

foreach (Principal p in usr.GetAuthorizationGroups())
{
    if (p.ToString() == "Administrators")
    {
        result = true;
    }
}

标签:active-directory,admin,active-directory-group,userprincipal,c
来源: https://codeday.me/bug/20191101/1981381.html