次の方法で共有


クライアント アプリケーション プロセスのセキュリティの設定

WMI インターフェイスを呼び出すクライアント アプリケーションは、プロセスのセキュリティ レベルを制御できます。 すべての WMI アプリケーションは COM 経由で WMI にアクセスし、CoInitializeSecurityCOM 関数を呼び出して、プロセスのセキュリティを設定できます。 WMI への非同期呼び出しを行うアプリケーションと、イベント コンシューマーとして登録されるアプリケーションは、WMI への呼び出しのセキュリティ レベルを設定します。

CoInitializeSecurity明示的な呼び出しを行わない場合、COM はレジストリの値を使用して暗黙的に呼び出します。 ただし、レジストリ値には、WMI に必要なセキュリティを提供しない偽装と認証の設定が低い場合があります。 詳細については、「C++を使用した既定のプロセス セキュリティ レベルの設定」を参照してください。

WMI への非同期アクセスは推奨されません。 非同期コールバックを使用すると、認証されていないユーザーがシンクにデータを提供できます。 これにより、スクリプトとアプリケーションにセキュリティ 上のリスクが伴います。 リスクを排除するには、半同期通信または同期通信を使用するか、クライアント アプリケーションで適切なアクセス チェックを実行します。 詳細については、「メソッドの呼び出し」を参照してください。

いずれかの WMI プロキシ (IWbemServicesIEnumWbemClassObjectIWbemCallResult、または IWbemRefresher) への呼び出しでは、アウトプロセス ポインターを使用します。 既定値と推奨事項の詳細については、「IWbemServices およびその他のプロキシでのセキュリティの設定」を参照してください。

次の手順では、アプリケーション プロセスで WMI のセキュリティを設定するために実行する必要がある手順について説明します。

アプリケーション プロセスで WMI のセキュリティを設定するには

  1. クライアント アプリケーションを実行する Windows オペレーティング システムに必要なセキュリティ レベルを決定します。
  2. COM CoInitializeSecurity 関数を呼び出して、クライアント アプリケーションを実行するプロセスの既定のセキュリティを設定します。 これにより、他のアプリケーションがアプリケーションを実行するプロセスにアクセスするために必要なセキュリティの量が宣言されます。
  3. 個々のプロキシのセキュリティを変更する必要がある場合 (たとえば、IWbemServicesする別の呼び出しで)、CoSetProxyBlanket を呼び出します。
  4. リモート ハードウェアまたはより多くの特権を必要とするシステム オブジェクトを制御する必要がある場合は、AdjustTokenPrivileges 関数を使用して、必要な特権を有効にします。 プロセスにまだ割り当てされていない特権は有効にできないことに注意してください。 詳細については、「プライベート オブジェクトへのアクセスの確認」を参照してください。

既定のプロセス セキュリティ レベルの設定の詳細については、「C++ を使用した既定のプロセス セキュリティ レベルの設定」および「VBScript を使用した既定のプロセス セキュリティ レベルの設定」を参照してください。