Compartir a través de


Establecimiento de los niveles de seguridad en una conexión WMI

Después de recuperar un puntero a un proxy IWbemServices, debe establecer la seguridad en el proxy para acceder a WMI a través del proxy. Debe configurar la seguridad porque el proxy IWbemServices concede acceso a un objeto fuera de proceso. En general, la seguridad COM no permite que un proceso acceda a otro proceso si no establece las propiedades de seguridad adecuadas. Para obtener más información, consulte Establecimiento de la seguridad en IWbemServices y otros servidores proxy. Las conexiones a diferentes sistemas operativos requieren distintos niveles de autenticación y suplantación. Para obtener más información, consulte Conexión a WMI en un equipo remoto (puede estar en inglés).

Para los ejemplos de código de este tema se requieren las siguientes referencias e instrucciones #include para compilarse correctamente.

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

En el procedimiento siguiente se describe cómo establecer los niveles de seguridad en una conexión WMI.

Para establecer los niveles de seguridad en una conexión WMI

  • Establezca los niveles de seguridad en el proxy IWbemServices con una llamada a CoSetProxyBlanket.

    En el ejemplo de código siguiente se describe una forma común de llamar a 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.
        }
    

Después de establecer los niveles de seguridad para el puntero IWbemServices, puede acceder a las distintas funcionalidades de WMI. Después de terminar de usar WMI, debe apagar la aplicación. Para obtener más información, consulte Limpieza y apagado de una aplicación WMI.