что отличается между wmi и API

Я работаю с программированием на C ++, я использую пример для понимания основного вопроса.

Предположим, мы хотим получить текущее имя пользователя в операционной системе Windows, мы можем использовать следующий код:

#include <windows.h>
#include <Lmcons.h>

char username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserName(username, &username_len);

также мы можем использовать wmi, следуя инструкциям Вот и использовать Win32_ComputerSystem.UserName .

Итак, я надеюсь, что вы полностью поняли, что отличается между WiM и использованием API или любым другим способом?

спасибо за ваш ответ.

1

Решение

недостаток :

  • Скорость (в основном недостаток)
  • если пользователь отключает службу wmi, wmi не работает.

преимущество :

  • Оборачивает нативный API
  • Более богатые данные, если вы используете wmi, вы можете получить богатые данные
  • стандартизированы, все «объекты» представлены в стандартизированной форме

Это наиболее важные вопросы для использования wmi.

2

Другие решения

Инструментарий управления Windows (WMI) — это набор спецификаций Microsoft для консолидации управления устройствами и приложениями в сети из компьютерных систем Windows.

Это реализация Microsoft системы управления предприятием через Интернет.
WMI — Сервисы установлены в ОС Windows, но сервис может быть отключен. Поэтому, если пользователь отключил сервис, вы не получите никакой информации о системе. Это просто для целей отчетности.

Принимая во внимание, что API — это способы, с помощью которых Microsoft предоставляет доступ к информации локальному Приложению, и некоторые способы, которыми вы также можете манипулировать предоставленной информацией.

1

WMI основан на запросах и работает очень медленно, так как API намного быстрее.
Пример: — если вы хотите проверить некоторые спецификации системы в вашем приложении перед запуском, вам лучше использовать API. Это заставит вас запускать приложение быстрее.

WMI имеет преимущество перед API-вызовом. Информация WMI более богата и легко читаема, поэтому для получения такого же результата мы должны сделать несколько API-вызовов.

1

API GetUserName это просто вызов функции, экспортируемой Advapi32.dll который принадлежит базовым функциям ядра.

С помощью Win32_ComputerSystem class вы собираетесь запросить Инструментарий управления Windows которая представляет собой сложную и всеобъемлющую инфраструктуру служб, которая решает большинство административных задач в Windows.

Отправка запроса в WMI требует гораздо больше ресурсов и времени выполнения, поэтому, если ваша цель просто получить имя пользователя, Я предлагаю вам положиться на API GetUserName.

1
По вопросам рекламы [email protected]