Nano Hash - криптовалюты, майнинг, программирование

Список классов WMIEvent

Недавно я узнал о WMI и WQL. Я узнал список классов Win32 (из MSDN), которые я могу запросить, но я не могу узнать список классов событий (должно быть подмножество списка классов Win32, не так ли?) Кто-нибудь есть список или какая-то шпаргалка для этого? Я просто спрашиваю это из любопытства.

Пример класса событий — Win32_ProcessStartTrace

25.06.2009

Ответы:


1

Вот как перечислить классы событий WMI в пространстве имен root\cimv2 с помощью C# и System.Management:

using System;
using System.Management;

class Program
{
    static void Main()
    {
        string query =
            @"Select * From Meta_Class Where __This Isa '__Event'";

        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher(query);

        foreach (ManagementBaseObject cimv2Class in searcher.Get())
        {
            Console.WriteLine(cimv2Class.ClassPath.ClassName);
        }
    }
}

root\cimv2 — это пространство имен WMI по умолчанию, поэтому вам не нужно использовать экземпляр ManagementScope. Запрос WQL, переданный ManagementObjectSearcher, является запросом метаданных WMI. Оно использует:

  • Meta_Class, чтобы обозначить запрос как запрос схемы, и
  • __This для рекурсивного отображения __Event подклассов

(см. здесь и здесь).

Класс WMI является классом событий, если его поставщик реализован как поставщик событий WMI и должен быть подклассом __Event. Это не означает, что вы не можете использовать «обычные» классы WMI, такие как Win32_Process и Win32_Service, в запросах событий WQL. Вам просто нужно использовать один из производных от __InstanceOperationEvent вспомогательных классов, таких как __InstanceCreationEvent или __InstanceDeletionEvent, и WMI будет использовать свою собственную подсистему событий для доставки событий.

Вот пример WQL-запроса, который подписывается на Win32_Process событий создания:

Select * From __InstanceCreationEvent Within 5 Where TargetInstance Isa 'Win32_Process'

В этом случае вы должны использовать Within пункт.

25.06.2009

2

WMI Code Creator — это отличный инструмент для изучения WMI, который, среди прочего, позволяет вам исследовать классы событий WMI на локальном или удаленном компьютере и создавать код для получения уведомлений о событиях.

Изменить. Поскольку вы пометили свой вопрос как C#, вам может быть интересен код для получения списка классов событий, полученных из определенного класса программным путем:

using System.Management;
...

string ancestor = "WMIEvent";     // the ancestor class
string scope = "root\\wmi";       // the WMI namespace to search within

try
{
    EnumerationOptions options = new EnumerationOptions();
    options.ReturnImmediately = true;
    options.Rewindable = false;

    ManagementObjectSearcher searcher =
        new ManagementObjectSearcher(scope, "SELECT * FROM meta_class", options);

    foreach (ManagementClass cls in searcher.Get())
    {
        if (cls.Derivation.Contains(ancestor))
        {
            Console.WriteLine(cls["__CLASS"].ToString());
        }
    }
}
catch (ManagementException exception)
{
    Console.WriteLine(exception.Message);
}
25.06.2009
  • Этот инструмент очень полезен для изучения доступных классов WMI. 25.06.2009

  • 3

    Разве в MSDN нет списка всех классов MSMCA?

    ОБНОВЛЕНИЕ:
    я не много работаю с WMI, но я только что нашел это Инструмент WMI, который был бы полезен. Он дает вам графический интерфейс для просмотра иерархии объектов WMI и даже позволяет вам регистрировать и использовать события. Это должно дать вам необходимую информацию.

    25.06.2009
  • Я тоже это видел, но список, похоже, не тот, что ему нужен. К сожалению, у него даже нет примера класса (Win32_ProcessStartTrace). 25.06.2009
  • Но (Win32_ProcessStartTrace) в конечном итоге не является производным от WMIEvent. Он имеет (__ExtrinsicEvent) в качестве родительского класса, но WMIEvent является дочерним по отношению к (__ExtrinsicEvent). Пример, который он предоставляет, не является WMIEvent... 25.06.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..