检查用户是域用户还是本地用户

时间:2012-10-03 14:12:13

标签: c# .net

我希望能够检查一个用户名,如果该用户是该机器的域用户或本地用户(使用.NET)但可以在网上找到很多

public static Boolean isLocalUser (string name)
{
//code here
}

EDIT 例如,您将me.user作为字符串

4 个答案:

答案 0 :(得分:4)

public bool DoesUserExist(string userName)
{
    bool exists = false;
    try
    {
    using (var domainContext = new PrincipalContext(ContextType.Domain, "DOMAIN"))
    {
        using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
        {
            exists = true;
        }
      }
    }
    catch(exception ex)
    {
      //Exception could occur if machine is not on a domain
    } 
    using (var domainContext = new PrincipalContext(ContextType.Machine))
    {
        using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
        {
            exists = true;
        }
    }
   return exists;
}

来源:Check UserID exists in Active Directory using C#

答案 1 :(得分:3)

大卫有钱,要检查当前用户是否属于域名,您可以查看Environment.UserDomainName并将其与当前用户进行比较。

MSDN

添加更多信息

答案 2 :(得分:3)

对我来说,到目前为止这种方法运作良好。 (离开使用)。

bool IsLocalUser(string accountName)
{
  var domainContext = new PrincipalContext(ContextType.Machine);
  return Principal.FindByIdentity(domainContext, accountName) != null;
}

但请注意,这不会识别“系统”帐户。我们单独检查,因为它始终是本地帐户。

答案 3 :(得分:1)

本地用户的帐户名称将以机器名称为前缀。域用户的帐户名称将以其原始域为前缀。如果计算机名称和帐户前缀名称不匹配,或者帐户名称前缀与本地计算机匹配,则通常可以安全地假设其本地帐户。