Initialisation de COM pour une application WMI
La première étape de la connexion à WMI consiste à configurer les appels COM à CoInitializeEx et CoInitializeSecurity.
Les exemples de code de cette rubrique nécessitent les références et les instructions #include suivantes pour être compilés correctement.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
La procédure suivante explique comment initialiser COM à partir d’une application cliente.
Pour initialiser COM à partir d’une application cliente
Initialisez COM en appelant CoInitializeEx.
L’appel de CoInitializeEx est une procédure standard de configuration d’une interface COM. Ainsi, WMI ne vous oblige pas à suivre des procédures supplémentaires quand vous appelez CoInitializeEx. Pour plus d’informations, consultez COM.
L’exemple de code suivant explique comment appeler 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; }
Définissez les niveaux de sécurité COM généraux en appelant l’interface CoInitializeSecurity.
CoInitializeSecurity est une fonction standard que vous devez appeler quand vous configurez une interface COM pour un processus. Appelez CoInitializeSecurity si vous souhaitez définir les paramètres de sécurité par défaut pour l’authentification, l’emprunt d’identité ou le service d’authentification de l’ensemble d’un processus. Pour plus d’informations, consultez Définition de la sécurité du processus d’application cliente. Si vous souhaitez définir ou changer la sécurité d’un proxy spécifique, vous devez appeler CoSetProxyBlanket. Utilisez CoSetProxyBlanket chaque fois que vous devez définir ou changer la sécurité COM au moment de l’exécution à l’intérieur d’un autre processus où vous ne pouvez pas contrôler les paramètres de sécurité par défaut pour l’authentification, l’emprunt d’identité ou le service d’authentification. Pour plus d’informations, consultez Définition des niveaux de sécurité sur une connexion WMI et Définition de la sécurité sur IWbemServices et d’autres proxys.
WMI présente plusieurs problèmes de sécurité dont vous devez être conscient quand vous programmez une application cliente WMI. Pour plus d’informations, consultez Définition de la sécurité du processus d’application cliente.
L’exemple de code suivant explique comment appeler CoInitializeSecurity pour définir la sécurité COM sur le processus.
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. }
Une fois COM initialisé, l’étape suivante consiste à créer une connexion à un espace de noms WMI. Pour plus d’informations, consultez Création d’une connexion à un espace de noms WMI.
Rubriques connexes