WMI 接続でのセキュリティ レベルの設定
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 アプリケーションのクリーンアップとシャットダウン」を参照してください。