Проверка имени пользователя и пароля в .NET
in

Для проверки имени пользователя Windows единственный надежный способ залогиниться под ним. Для этого используем функцию API:

using System.Runtime.InteropServices;

namespace SetRights
{
  class LoginHelper
  {
   [DllImport("advapi32.dll", SetLastError = true)]
   private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
   int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

   [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
   public static extern bool CloseHandle(IntPtr handle);

   const int LOGON32_PROVIDER_DEFAULT = 0;
   //этот параметр вызывает LogonUser, чтобы создать первичный токен
   const int LOGON32_LOGON_INTERACTIVE = 2;

   static public void ValidateUser(string userName, string domainName, string password)
    {
      IntPtr tokenHandle = new IntPtr(0);
 
      tokenHandle = IntPtr.Zero;
      //Вызов LogonUser, чтобы получить дескриптор для доступа          
      bool returnValue = LogonUser(userName, domainName, password,
      LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
 
     if (false == returnValue)
     {
      int ret = Marshal.GetLastWin32Error();
      throw new System.ComponentModel.Win32Exception(ret);
     }

     // освобождаем токены
     if (tokenHandle != IntPtr.Zero)
      CloseHandle(tokenHandle);
    }
  }
}
0
Your rating: Нет

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br><b><i> <img>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

КАПЧА
Этот тест необходим защиты от спама
4 + 14 =
Решите эту простую математическую задачу и введите результат. То есть для 1+3, введите 4.
To prevent automated spam submissions leave this field empty.