чем отличается 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 .

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

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


person Mr.DeveloperCplus    schedule 24.09.2018    source источник
comment
Попробуйте задать вопрос;)   -  person YSC    schedule 24.09.2018
comment
Думаю, вы можете найти эти различия в документации ... Например, ComputerSystem.UserName - это оболочка для GetUserNameW. Обратите внимание, что возвращаемая строка является Unicode, а не однобайтовой строкой, которая извлекается во фрагменте кода.   -  person user7860670    schedule 24.09.2018


Ответы (4)


недостаток:

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

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

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

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

person Jack D    schedule 24.09.2018
comment
Что означают более обширные данные? Просто что больше данных доступно с WMI? или что-то другое? - person user673679; 24.09.2018
comment
@ user673679 Поскольку программисты могут писать своих собственных поставщиков WMI, вы можете получать данные из стороннего программного обеспечения. Это то, что Microsoft делает в интерфейсе своего центра безопасности, получая данные от сторонних антивирусных программ и брандмауэров. - person Jack D; 24.09.2018

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

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

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

person anup kataria    schedule 24.09.2018

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

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

person AiverReaver    schedule 24.09.2018

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

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

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

person Antonio Petricca    schedule 24.09.2018