Меню сайта
Категории раздела
Мои лекции [2]
C# [2]
as3 [3]
теория и практика
java [1]
первые шаги в java. Теория и практика
Web [2]
CSS, HTML, JS и т.д.
MyProgramms [2]
Образование [1]
лекции разного уровня
Мои ссылки
  • Новый проект Ufo&MIR
  • Дизайн-магазин
  • Поиск
    Статистика


    Суббота, 21.10.2017, 11:21ГлавнаяМой профильРегистрацияВыходВход
    Добро пожаловать в мой MIR!
    Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
    Главная » Статьи » Программирование » Мои лекции

    С#. Основы WMI

           Краткое описание

         Технология WMI (Windows Management Instrumentation) - это одна из базовых технологий Microsoft для централизованного управления и слежения за работой различных частей компьютерной сети под управлением Windows.
          С помощью WMI можно управлять устройствами, учетными записями, сервисами, процессами, сетевыми интерфейсами и другими программами, которые расширяют базовую структуру WMI своими классами.

       Технология WMI - это расширенная и адаптированная под Windows реализация стандарта WBEM (Web-Based Enterprise Management), принятого многими компаниями, в основе которого лежит идея создания универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML.

        Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows.

           Политика безопасности

          Если пользователь не имеет права делать какое-то действие через операционную систему, он не сможет это сделать и через WMI.

           Язык запросов

        Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одним из разновидностей SQL. Основное его отличие от ANSI SQL - это невозможность изменения данных, то есть с помощью WQL возможна лишь выборка данных с помощью команды SELECT. WQL не поддерживает такие операторы как DISTINCT, JOIN, ORDER, GROUP, математические функции.

           Репозиторий

         В результате подключения к WMI получается объект SWbemServices, который обладает определенными свойствами и методами. Наиболее часто используемые из них - это Get, ExecQuery, ExecMethod.


         Ход работы.

         Для работы с WMI, Framework .NET предоставляет сборку System.Management.dll и одноименным неймспейсом.

    • перед началом работы добавим System.Management в References. Следуем: (Проект - Добавить ссылку.. – NET - System.Management - OK)

    • затем запишем пространство в редакторе, чтобы можно было использовать методы WMI:

                  using System.Management;

    (теперь приложения и службы могут запрашивать важные сведения об управлении с помощью классов, производных от ManagementObjectSearcher и ManagementQuery)

    • подключение к компу.

           Работа с WMI начинается с класса ManagementScope, который предназначен для подключению к серверу WMI. Основной конструктор этого класса принимает 2 параметра:

    1. path - путь для подключения;
    2. options - параметры подключения.

           Параметры path такие: string.Format(@"\\{0}\root\cimv2", host).

       Путь содержит хост компьютера к которому нужно подключиться, и путь неймспейса WMI (имеет иерархическую структуру). Имеется много нейсмпейсов, но наиболее используемый cimv2. (Менеджер объектов CIM (Common Information Model Object Manager, CIMOM), который обеспечивает обработку всех запросов конечных приложений к WMI и доставку информации от WMI к конечным приложениям. Классы CIM группируются в пространства имён (namespaces), которые упорядочены иерархически. Корневое пространство имён обозначается как Root. В любом варианте установки WMI имеются четыре пространства имён, которые находятся на один уровень ниже корневого пространства имён: CIMV2, Default, Security и WMI.)

            Параметр options содержит следующие поля:

    •     Username - имя пользователя Windows.

    •     Password/SecurePassword - пароль пользователя Windows.

        После создания объекта, производят подключение к WMI. Для этого нужно вызвать метод Connect. Свойство IsConnected возвращает состояние подключения. ( Класс ManagementScope не имеет метода для разрыва связи, для того чтобы переподключиться, нужно повторно вызвать метод Connect ).

            Код для удаленного подключения к WMI:

        ConnectionOptions options = new ConnectionOptions();

          options.Username = username;

          options.Password = password;

      ManagementScope scope = new ManagementScope(string.Format("\\\\{0}\\root\\cimv2", "host”),  options);

          scope.Connect();

            Для локального подключения:

       ManagementScope scope = new ManagementScope(@"\\.\root\cimv2");

        scope.Connect();


    • создаем запрос

        После создания подключения, мы можем начать запрашивать различную информацию от WMI. Для этого существует класс SelectQuery или ObjectQuery. В конструкторе им передается строка с SQL-подобным запросом. После этого мы можем использовать объект класса SelectQuery для передачи его в конструктор класса ManagementObjectSearcher.

     SelectQuery query = new SelectQuery(@"Select DeviceID, FreeSpace, Size, DriveType from Win32_LogicalDisk");

     ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope,query);

     ManagementObjectCollection queryCollection = searcher.Get();

     foreach (ManagementObject mo in queryCollection)

    {

        Console.WriteLine("DeviceID: {0}", mo["DeviceID"]);

        Console.WriteLine("FreeSpace: {0}", mo["FreeSpace"]);

        Console.WriteLine("Size: {0}", mo["Size"]);

        Console.WriteLine("DriveType : {0}", mo["DriveType "]);

    }

       Console.ReadKey();


    Отметим:

    {0} – указывает, куда подставляется значение. Цифра, это порядок следующих друг за другом значений, указанных в строчку. Отсчет начинается с 0.


         Пример: выводим имя компьютера

        ManagementScope sc = new ManagementScope(@"\\.\root\cimv2");

        sc.Connect();

        ObjectQuery sq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");

        ManagementObjectSearcher os = new ManagementObjectSearcher(sc, sq);

        ManagementObjectCollection qc = os.Get();

        foreach (ManagementObject mo in qc)

        {

           Console.WriteLine("Computer Name : {0}", mo["csname"]);

        }

        Console.ReadKey();


    Категория: Мои лекции | Добавил: halenka (09.09.2013)
    Просмотров: 1129 | Комментарии: 3 | Теги: WMI, C# | Рейтинг: 0.0/0
    Всего комментариев: 1
    1  
    Eсли ты тaкой умный, то почeму мало зaрабатывaeшь? Грамoтные и эффeктивныe тренеры oгрaничивают себя нeбольшими залами, coкpащая дохoд от каждoгo выступления.
    Снять всe баpьеpы к cвoей аудитории и oрганизoвать качествeнную oнлайн-трансляцию пoмогает кoмaнда Tеlemоst.рrо. Мы не знаeм огрaничений и УМЕEМ ВСЁ: coздaём виртуальную cтудию, обecпечиваем индивидуальный доcтуп к тpaнсляции пo элeктpонным билетaм, pаботаeм толькo с пpофесcионaльным обоpудoванием (дублируя ключевые элeмeнты при съёмкe VIP-персон). Мультикaнальная видeоcъёмка действительно сoздаёт эффeкт присутствия – провeрено годами работы.
    http://www.telemost.pro/ - видеотрансляции

    Имя *:
    Email *:
    Код *:

    Copyright MyCorp © 2017