none
Как проверить имя пользователя и пароль на локальной машине? RRS feed

  • Вопрос

  • Здравствуйте. Разрабатываю приложение на C#, хочу добавить аутентификацию на основе локальных учетных записей. Компьютер не включен в домен AD, ОС WinXP. Предусматривает ли .NET подобные средства? 

    Пробовал так:

    PrincipalContext pc = new PrincipalContext(ContextType.Machine, Environment.MachineName, null, ContextOptions.Negotiate, username, password);<br/>return pc.ValidateCredentials(username, password, ContextOptions.Negotiate);
    

    Постоянно возвращает false, внутри себя обрабатывает исключение:

    Exception:Thrown: "Вход в систему не произведен: имя пользователя или пароль не опознаны. (Исключение из HRESULT: 0x8007052E)" (System.Runtime.InteropServices.COMException)
    A System.Runtime.InteropServices.COMException was thrown: "Вход в систему не произведен: имя пользователя или пароль не опознаны. (Исключение из HRESULT: 0x8007052E)"

    Пробовал так:

    DirectoryEntry entry = new DirectoryEntry(@"WinNT://" + Environment.MachineName, username, password);
    try
    {
        object t = entry.NativeObject;
        ret = true;
    }
    catch (DirectoryServicesCOMException cex)
    {
        return false;
    }
    catch (Exception ex)
    {
        return false;
    }
    


    Исключение никогда не кидается, даже при неверном пароле.

    2 декабря 2011 г. 19:51

Ответы

Все ответы

  • System.DirectoryServices.AccountManagement.PrincipalContext... DirectoryService есть только Windows Server с Active Directory, в XP, Vista, 7 этой службы нет и не будет. И соотвественно доступ к службе каталогов сервера из рабочей группы вы не получите...

    2 декабря 2011 г. 20:37
  • Согласен. В какую сторону предлагаете смотреть? Можно без готового решения, просто название технологии, либо класса .NET, который смог бы решить проблему.
    3 декабря 2011 г. 10:21
  • Смотреть LogonUser API для С++ и вставлять в управляемый код.

    Почитать и посмотреть пример можно http://support.microsoft.com/kb/180548

    • Помечено в качестве ответа SemmZemm 3 декабря 2011 г. 20:40
    3 декабря 2011 г. 17:00