Festlegen der Sicherheitsebenen für eine WMI-Verbindung

Nachdem Sie einen Zeiger auf einen IWbemServices-Proxy abgerufen haben, müssen Sie die Sicherheitseinstellungen für den Proxy für den Zugriff auf WMI über den Proxy festlegen. Sie müssen die Sicherheitseinstellungen festlegen, da der IWbemServices-Proxy Zugriff auf ein prozessexternes Objekt gewährt. Im Allgemeinen lassen die COM-Sicherheitseinstellungen nicht zu, dass ein Prozess auf einen anderen Prozess zugreifen kann, wenn Sie nicht die ordnungsgemäßen Sicherheitseigenschaften festgelegt haben. Weitere Informationen finden Sie unter Festlegen von Sicherheitseinstellungen für IWbemServices und andere Proxys. Verbindungen mit verschiedenen Betriebssystemen erfordern unterschiedliche Authentifizierungs- und Identitätswechselebenen. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Für die Codebeispiele in diesem Thema müssen die folgenden Verweise und #include-Anweisungen ordnungsgemäß kompiliert werden.

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")

Im folgenden Verfahren wird beschrieben, wie die Sicherheitsebenen für eine WMI-Verbindung festgelegt werden.

So legen Sie die Sicherheitsebenen für eine WMI-Verbindung fest

  • Legen Sie die Sicherheitsebenen für den IWbemServices-Proxy mit einem Aufruf von CoSetProxyBlanket fest.

    Im folgenden Codebeispiel wird eine gängige Methode zum Aufrufen von CoSetProxyBlanket beschrieben.

        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.
        }
    

Nachdem Sie die Sicherheitsebenen für Ihren IWbemServices-Zeiger festgelegt haben, können Sie auf die verschiedenen Funktionen von WMI zugreifen. Nachdem Sie die Verwendung von WMI abgeschlossen haben, müssen Sie Ihre Anwendung herunterfahren. Weitere Informationen finden Sie unter Bereinigen und Herunterfahren einer WMI-Anwendung.