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