Définition des niveaux de sécurité sur une connexion WMI
Après avoir récupéré un pointeur vers un proxy IWbemServices, vous devez définir la sécurité sur le proxy pour accéder à WMI via le proxy. Vous devez définir la sécurité, car le IWbemServices proxy accorde l’accès à un objet hors processus. En général, la sécurité COM n’autorise pas un processus à accéder à un autre processus si vous ne définissez pas les propriétés de sécurité appropriées. Pour plus d’informations, consultez Configuration de la sécurité sur IWbemServices et autres proxys. Les connexions à différents systèmes d’exploitation nécessitent différents niveaux d’authentification et d’emprunt d’identité. Pour plus d’informations, consultez Connexion à WMI sur un ordinateur distant.
Les exemples de code de cette rubrique nécessitent les références et les instructions #include suivantes pour compiler correctement.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
La procédure suivante décrit comment définir les niveaux de sécurité sur une connexion WMI.
Pour définir les niveaux de sécurité sur une connexion WMI
Définissez les niveaux de sécurité sur le proxyIWbemServicesavec un appel à CoSetProxyBlanket.
L’exemple de code suivant décrit un moyen courant d’appeler CoSetProxyBlanket.
HRESULT hres; IWbemServices *pSvc = 0; IWbemLocator *pLoc = 0; // Set the proxy so that impersonation of the client occurs. hres = CoSetProxyBlanket(pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); if (FAILED(hres)) { cout << "Could not set proxy blanket. Error code = 0x" << hex << hres << endl; pSvc->Release(); pLoc->Release(); CoUninitialize(); return hres; // Program has failed. }
Après avoir défini les niveaux de sécurité de votre pointeur IWbemServices, vous pouvez accéder aux différentes fonctionnalités de WMI. Une fois que vous avez terminé d’utiliser WMI, vous devez arrêter votre application. Pour plus d’informations, consultez Nettoyage et arrêt d’une application WMI.