Информация о системе на C#

Информация о системе на C#

Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел рассказать, как получить информацию о системе, используя C#. Делать мы это будем двумя способами. Первый способ заключается в использовании класса Environment. Второй способ — это использование WMI-классов, а именно класса Win32_OperatingSystem.

Сразу приведу код:

using System;
using System.IO;
using System.Management; // нужно добавить ссылку
using System.Text;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      ShowSystemInfo();
      ShowSystemInfoFromWMI();
      Console.WriteLine("Нажмите клавишу для продолжения");
      Console.ReadLine();
    }
    public static void ShowSystemInfo() 
    {
      Console.WriteLine("Операционная система (номер версии):  {0}", Environment.OSVersion);
      Console.WriteLine("Разрядность процессора:  {0}", Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"));
      Console.WriteLine("Модель процессора:  {0}", Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER"));
      Console.WriteLine("Путь к системному каталогу:  {0}", Environment.SystemDirectory);
      Console.WriteLine("Число процессоров:  {0}", Environment.ProcessorCount);
      Console.WriteLine("Имя пользователя: {0}", Environment.UserName);
      // Локальные диски
      Console.WriteLine("Локальные диски: ");
      foreach (DriveInfo dI in DriveInfo.GetDrives())
      {
        Console.Write(
              "\t Диск: {0}\n\t" +
              " Формат диска: {1}\n\t " +
              "Размер диска (ГБ): {2}\n\t Доступное свободное место (ГБ): {3}\n",
              dI.Name, dI.DriveFormat, (double)dI.TotalSize / 1024 / 1024 / 1024, (double)dI.AvailableFreeSpace / 1024 / 1024 / 1024);
        Console.WriteLine();
      }
    }

    // Здесь для работы со строками будем использовать класс StringBuilder
    public static void ShowSystemInfoFromWMI()
    {
      StringBuilder systemInfo = new StringBuilder();
      ManagementClass manageClass = new ManagementClass("Win32_OperatingSystem");
      // Получаем все экземпляры класса
      ManagementObjectCollection manageObjects = manageClass.GetInstances();
      // Получаем набор свойств класса
      PropertyDataCollection properties = manageClass.Properties;
      foreach (ManagementObject obj in manageObjects)
      {
        foreach (PropertyData property in properties)
        {
          try
          {
            systemInfo.AppendLine(property.Name + ":  " +
                            obj.Properties[property.Name].Value.ToString());
          }
          catch { }
        }
        systemInfo.AppendLine();
      }
      Console.WriteLine(systemInfo);
    }
  }
}

Думаю, что вопросов по методу ShowSystemInfo() возникнуть не должно. Единственное отмечу, что размер дисков представлен в байтах. В примере мы всё переводим в ГБ.

Остановимся подробнее на работе метода ShowSystemInfoFromWMI().

ManagementClass — это класс WMI, т.е. некий контейнер, в котором хранится информации. В Windows таких классов очень много. Приведу некоторые примеры: Win32_LocalTime, Win32_DiskDrive, Win32_Process, Win32_Processor. Также можно создавать свои классы.

Конструкцию try catch добавляем так как может возникнуть исключение NullReferenceException. Оно возникает из-за того, что значения некоторых свойств заданы как NULL.

Для работы с WMI в системе Windows есть утилита wbemtest.exe. Перейти в неё можно с помощью команды "Выполнить" (Win + R):

Информация о системе на C#

Далее подключаем пространство имен "root\cimv2":

Информация о системе на C#

"Классы" — "Рекурсивное вхождение" — "OK":

Информация о системе на C#

Выбираем класс "Win32_OperatingSystem":

Информация о системе на C#
Информация о системе на C#

Здесь мы видим значения свойств объекта класса "Win32_OperatingSystem":

Информация о системе на C#

В данной статье вы научились получать информацию о системе, используя C#.

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


Комментарии:
Продажа дипломов срочно Владимир. Существуют некоторые программы Международного бакалавриата, которые объединяют несколько видов высшего образования http://diplomwebs.com/ дипломов срочно Владимир. Выпускники данной программы могут работать во всех сферах деятельности: финансовые учреждения, государственные и муниципаль

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

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