Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Первым шагом при подключении к WMI является настройка вызовов COM для CoInitializeEx и CoInitializeSecurity.
В примерах кода в этом разделе требуются следующие ссылки и #include инструкции для правильной компиляции.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
В следующей процедуре описывается, как инициализировать COM из клиентского приложения.
Инициализация COM из клиентского приложения
Инициализируйте COM с вызовом CoInitializeEx.
Вызов CoInitializeEx — это стандартная процедура настройки COM-интерфейса. Поэтому WMI не требует выполнения дополнительных процедур при вызове CoInitializeEx. Дополнительные сведения см. в разделе COM.
В следующем примере кода описывается вызов CoInitializeEx.
HRESULT hr; hr = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hr)) { cout << "Failed to initialize COM library. Error code = 0x" << hex << hr << endl; return hr; }
Задайте общие уровни безопасности COM с вызовом интерфейса CoInitializeSecurity.
CoInitializeSecurity — это стандартная функция, которую необходимо вызвать при настройке COM-интерфейса для процесса. Вызовите CoInitializeSecurity, если вы хотите задать параметры безопасности по умолчанию для проверки подлинности, олицетворения или службы проверки подлинности для всего процесса. Для получения дополнительной информации см. раздел Установка безопасности процесса клиентского приложения. Если вы хотите задать или изменить безопасность для конкретного прокси-сервера, необходимо вызвать CoSetProxyBlanket. Используйте CoSetProxyBlanket каждый раз, когда необходимо задать или изменить параметры безопасности COM при выполнении в другом процессе, где нельзя контролировать параметры безопасности по умолчанию для аутентификации, олицетворения или службы аутентификации. Дополнительные сведения см. в разделе Настройка уровней безопасности на подключении WMI и Настройка безопасности на IWbemServices и других прокси-серверах.
WMI имеет несколько проблем безопасности, которые следует учитывать при программировании клиентского приложения WMI. См. раздел Настройка безопасности процесса клиентского приложениядля получения дополнительной информации.
В следующем примере кода описывается вызов CoInitializeSecurity для настройки безопасности COM в процессе.
hr = CoInitializeSecurity( NULL, // Security descriptor -1, // COM negotiates authentication service NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication level for proxies RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation level for proxies NULL, // Authentication info EOAC_NONE, // Additional capabilities of the client or server NULL); // Reserved if (FAILED(hr)) { cout << "Failed to initialize security. Error code = 0x" << hex << hr << endl; CoUninitialize(); return hr; // Program has failed. }
После инициализации COM необходимо создать подключение к пространству имен WMI. Дополнительные сведения см. в статье Создание подключения к пространству имен WMI.
Связанные разделы