C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как получить полное имя пользователя / Локальная сеть / Сеть

Как получить полное имя пользователя

Рабочие станции Windows NT могут быть организованы в домен, который является набором компьютеров в в сети Windows NT. Администратор домена поддерживает информацию об учётных записях пользователей и рабочих групп.

Если Вы знаете имя пользователя и имя домена, то для нахождения полного имени пользователя необходимо проделать следующее:

  1. Преобразовать имя пользователя и имя домена в Unicode, если конечно они уже не являются строками Unicode. Это требование API функций LAN Менеджера, которые будут использоваться в следующих шагах.

  2. Определить имя контроллера домена (DC) для данного имени домена при помощи вызова NetServerEnum().

  3. Определить имя пользователя при помощи NetUserGetInfo()

  4. Если программа не работает со строками Unicode, то преобразовать полное имя пользователя в ANSI.

Код, приведённый ниже, представляет из себя функцию, которая получает в первых двух параметрах имя пользователя и домена, а в третьем параметре возвращает полное имя пользователя.

Дополнительную информацию о том, как можно получить текущего пользователя и домен, можно найти в статье из Microsoft Knowledge Base:

Q111544 Как получить текущее имя пользователя и имя домена

Пример кода

   #include <windows.h>
   #include <lm.h>
   #include <stdio.h>

   /********************************************************************\ 
   * Функция: GetFullName( char *UserName, char *Domain, char *dest );  *
   *                                                                    *
   * Параметры:                                                         *
   *    UserName: имя пользователя                                      *
   *    Domain  : домен, которому принадлежит пользователь              *
   *    dest    : Получаемое полное имя пользователя                    *
   *                                                                    *
   \********************************************************************/ 

   BOOL GetFullName(char *UserName, char *Domain, char *dest)
   {
      WCHAR  wszUserName[256];           // имя пользователя в Unicode
      WCHAR  wszDomain[256];
      LPBYTE ComputerName;

      struct _SERVER_INFO_100 *si100;   // Структура для сервера
      struct _USER_INFO_2 *ui;          // Структура для пользователя

      // Конвертируем имя пользователя и домена из ASCII в Unicode.

      MultiByteToWideChar( CP_ACP, 0, UserName,
         strlen(UserName)+1, wszUserName, sizeof(wszUserName) );
      MultiByteToWideChar( CP_ACP, 0, Domain,
         strlen(Domain)+1, wszDomain, sizeof(wszDomain) );

      // Получаем имя компьютера, который является контроллером домена (DC)
      // для указанного домена.

      NetGetDCName( NULL, wszDomain, &ComputerName );

      // Ищем пользователя в контроллере домена.

      if(NetUserGetInfo( (LPWSTR) ComputerName,
         (LPWSTR) &wszUserName, 2, (LPBYTE *) &ui))
      {
         printf( "Error getting user information.\n" );
         return( FALSE );
      }

      // Преобразуем полное имя из Unicode в ASCII.

      WideCharToMultiByte( CP_ACP, 0, ui->usri2_full_name,
         -1, dest, 256, NULL, NULL );

      return( TRUE );
   }