C# - Не удается проверить пользователя локального компьютера, когда ".\" Предварительно добавляется с именем пользователя
Я использую библиотеку System.DirectoryServices.AccountManagement для проверки локального пользователя.
У меня есть следующий код:
private bool IsValidWindowsUser(string userName, string password)
{
using (var p = new PrincipalContext(ContextType.Machine))
return p.ValidateCredentials(userName, password);
}
Но всякий раз, когда я передаю правильное имя пользователя с ".\" Preappend, например, если имя пользователя - "test", и если я передаю имя пользователя как ". \ Test", то это дает мне исключение
The network path was not found.
Может кто-нибудь, пожалуйста, помогите мне. Если я удаляю ".\", То он работает нормально.
Мое другое условие - я хочу только проверить пользователя Локального компьютера, а не пользователя домена.
Пожалуйста помоги
1 ответ
Вот что у меня получилось, на случай, если у кого-то есть аналогичная проблема.
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;
}
}
Попробуй это:
p.ValidateCredentials(Environment.MachineName + "\\" + userName, password);