Condividi tramite


Impostazione dei livelli di sicurezza in una connessione WMI

Dopo aver recuperato un puntatore a un proxy IWbemServices, è necessario impostare la sicurezza sul proxy per accedere a WMI tramite il proxy. È necessario impostare la sicurezza perché il proxy IWbemServices concede l'accesso a un oggetto fuori dal processo. In generale, la sicurezza COM non consente a un processo di accedere a un altro processo se non si impostano le proprietà di sicurezza appropriate. Per ulteriori informazioni, vedere Configurazione della sicurezza su IWbemServices e altri proxy. Le connessioni a sistemi operativi diversi richiedono diversi livelli di autenticazione e impersonificazione. Per altre informazioni, vedere Connessione a WMI su un computer remoto.

Gli esempi di codice in questo argomento richiedono i riferimenti seguenti e le istruzioni #include per la compilazione corretta.

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

La procedura seguente descrive come impostare i livelli di sicurezza in una connessione WMI.

Impostare i livelli di sicurezza in una connessione WMI

  • Imposta i livelli di sicurezza sul proxy IWbemServices con una chiamata a CoSetProxyBlanket.

    Nell'esempio di codice seguente viene descritto un modo comune per chiamare 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.
        }
    

Dopo aver impostato i livelli di sicurezza per il puntatore IWbemServices, è possibile accedere alle varie funzionalità di WMI. Al termine dell'uso di WMI, è necessario arrestare l'applicazione. Per ulteriori informazioni, vedere Pulizia e spegnimento di un'applicazione WMI.