Logged on User на C#

Logged on User на C#

Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел показать, как узнать учетную запись пользователя, который вошёл в систему на C#. Для получения учетной записи локальной машины можно использовать класс Environment (предоставляет сведения о текущей среде) или класс WindowsIdentity (предоставляет пользователя Windows).

С локальной машиной всё просто. Для получения пользователя удаленной машины одним из вариантов будет обращения к классу WMI: Win32_ComputerSystem. У данного класса есть свойство UserName, которое нам и необходимо получить.

Код обоих методов приведен ниже:

using System;
// не забываем добавить ссылку
using System.Management;
using System.Security.Principal;

namespace GetLoggedOnUser
{
  class Program
  {
    static void Main(string[] args)
    {
      GetLocalLoggedOnUser();
      Console.WriteLine("**********************");
      GetRemoteLoggedONUser("TestPC");
      Console.ReadLine();
    }
    
    // Получаем учетную запись пользователя на локальной машине
    static void GetLocalLoggedOnUser() 
    {
      // Имя пользователя, который выполнил вход в систему Windows
      Console.WriteLine("Имя пользователя: " + Environment.UserName);
      Console.WriteLine(@"Домен \ имя пользователя: " + WindowsIdentity.GetCurrent().Name);
    }
    
    // Получаем учетную запись пользователя на удаленной машине
    static void GetRemoteLoggedONUser(string computerName)
    {
      try
      {
        // Осуществляем подключение к пространству имен root\cimv2 удаленной машины
        ManagementScope scope = new ManagementScope(@"\\" + computerName + @"\root\cimv2");
        scope.Connect();
        
        // Если подключиться удалось
        if (scope.IsConnected)
        {
          // Обращаемся к классу Win32_ComputerSystem
          ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"\\" + computerName + @"\root\cimv2", "SELECT * FROM Win32_ComputerSystem");
          
          // Пройдя по всем свойствам данного класса находим свойство UserName
          foreach (ManagementObject obj in searcher.Get())
          {
            Console.WriteLine("Пользователь: {0}", obj["UserName"]);
          }
        }
      }
      catch (Exception ex) 
      {
        Console.WriteLine("Во время работы метода произошла ошибка: {0}", ex.Message);
      }
    }
  }
}

В данной статье вы узнали, как получить пользователя, который вошёл в систему Windows на C#.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

5 комментарии

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *