在Windows 7中查看用户是否为admin?

时间:2012-06-28 19:15:36

标签: c# windows-7 admin

我想创建一个函数来确定其ID是否带参数传递的用户是否为admin。我可以使用 -

为当前登录的用户执行此操作
        public static bool IsAuthorizedUser()
    {

        WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
        WindowsPrincipal principal = new WindowsPrincipal(identity); 
        return principal.IsInRole(WindowsBuiltInRole.Administrator); 
    }

但我想检查传入的任何用户。因此签名将变为

public static bool IsAuthorizedUser(string username_to_check) 

我该怎么做?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

我能够通过UserPrincipal让我的工作变得如此。感谢您的所有反馈。

 public static bool IsAuthorizedUser(string userId) 
 {
     PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
     UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userId);

     bool result = false;
     if(usr == null)
     {
         Console.WriteLine("usr is null");
     }
     else
     {
         foreach (Principal p in usr.GetAuthorizationGroups())
         {
             if (p.ToString() == "Administrators")
             {
                 result = true;
             }
         }
      }
      return result;
    }

答案 1 :(得分:0)

看起来你需要查看WindowsIdentity的声明,看看是否有方法从它的字符串名称中检索用户身份。

答案 2 :(得分:0)

您可以尝试使用此代码

if(principal.Identity.IsAuthenticated)
{
    //Passed
}