1

我正在使用 System.DirectoryServices.AccountManagement 库来验证本地用户。

我有以下代码:

  private bool IsValidWindowsUser(string userName, string password)
  {
       using (var p = new PrincipalContext(ContextType.Machine))
            return p.ValidateCredentials(userName, password);
  }

但是,每当我传递正确的用户名时,前置“。

The network path was not found.

有人能帮帮我吗。如果我删除“。\”那么它工作正常。

我的另一个条件是我只想验证本地机器用户而不是域用户。

请帮忙

4

2 回答 2

0

尝试这个:

p.ValidateCredentials(Environment.MachineName + "\\" + userName, password);
于 2013-09-18T05:32:52.717 回答
0

这是我的工作,以防其他人遇到类似问题。

 string GetLogin(string s)
    {
        string regex = @"^(.*\\)?([^\@]*)(@.*)?$";
        return Regex.Replace(s, regex, "$2", RegexOptions.None);
    }

using (PrincipalContext pcLocal = new PrincipalContext(ContextType.Machine))
            {
                try
                {
                            try
                            {
                                if (null != group && pcLocal.ValidateCredentials($".\\{username}", password))
                                {
                                    return GetLogin(findByIdentity.SamAccountName);
                                }
                            }
                            catch (Exception)
                            {
                                string user = GetLogin(username);

                                if (null != group && pcLocal.ValidateCredentials(user, password))
                                {
                                    return GetLogin(findByIdentity.SamAccountName);
                                }
                            }

                }
                catch (Exception e)
                {
                    throw e;
                }
            }
于 2019-07-26T17:07:02.373 回答