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.