Partilhar via


Definindo os níveis de segurança em uma conexão WMI

Depois de recuperar um ponteiro para um IWbemServices proxy, você deve definir a segurança no proxy para acessar o WMI por meio do proxy. Você deve definir a segurança porque o proxy IWbemServices concede acesso a um objeto fora do processo. Em geral, a segurança COM não permite que um processo acesse outro processo se você não definir as propriedades de segurança adequadas. Para obter mais informações, consulte Configuração da segurança do IWbemServices e de outros proxies. Conexões com diferentes sistemas operacionais exigem níveis variados de autenticação e representação. Para obter mais informações, consulte Conectando-se ao WMI em um computador remoto.

Os exemplos de código neste tópico exigem as seguintes referências e instruções #include para compilar corretamente.

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

O procedimento a seguir descreve como definir os níveis de segurança em uma conexão WMI.

Para definir os níveis de segurança em uma conexão WMI

  • Defina os níveis de segurança no IWbemServices proxy com uma chamada para CoSetProxyBlanket.

    O exemplo de código a seguir descreve uma maneira comum de chamar 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.
        }
    

Depois de definir os níveis de segurança para o ponteiro IWbemServices, pode aceder aos vários recursos do WMI. Depois de terminar de usar o WMI, você deve desligar seu aplicativo. Para obter mais informações, consulte Limpeza e desligamento de uma aplicação WMI.