勇芳软件工作室.汉化:  Windows Management Instrumentation > Creating WMI Clients > Creating a WMI Application or Script > Creating a WMI Application Using C++ >

Setting the Security Levels on a WMI Connection

Previous pageReturn to chapter overviewNext page

检索指向IWbemServices代理的指针后,必须设置代理服务器上的安全性才能通过代理访问WMI。您必须设置安全性,因为IWbemServices代理授予访问进程外对象的权限。一般来说,COM安全性不允许一个进程访问另一个进程,如果您没有设置正确的安全属性。有关详细信息,请参阅设置IWbemServices和其他代理的安全性.与不同操作系统的连接需要不同级别的身份验证和模拟。有关详细信息,请参阅连接到远程计算机上的WMI.

 

本主题中的代码示例需要以下引用和#include语句才能正确编译。

 

#define _WIN32_DCOM

#include <iostream>

using namespace std;

#include <wbemidl.h>

# pragma comment(lib, "wbemuuid.lib")

 

以下过程介绍如何设置WMI连接上的安全级别。

 

设置WMI连接上的安全级别

 

·通过调用CoSetProxyBlanket来设置IWbemServices代理服务器上的安全级别。

 

以下代码示例描述了调用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.

}

 

为您的IWbemServices指针设置安全级别后,您可以访问WMI的各种功能。使用WMI后,您必须关闭应用程序。有关详细信息,请参阅清理并关闭WMI应用程序.