名前空間を作成する Managed Object Format (MOF) .mof ファイルに RequiresEncryption 修飾子を追加することで、クライアント スクリプトとアプリケーションが認証用に暗号化された接続を確立するように要求できます。
WMI 名前空間への暗号化された接続は、認証 RPC_C_AUTHN_LEVEL_PKT_PRIVACY (またはスクリプト内の PktPrivacy ) を指定します。 RequiresEncryption 修飾子を指定すると、WMI は、暗号化された認証を明示的に使用しない限り、受信データ要求を拒否します。 詳細については、「 VBScript を使用した既定のプロセス セキュリティ レベルの設定 」または 「C++ を使用した認証の設定」を参照してください。
この属性を追加して既存の名前空間を変更し、MOF ファイルをもう一度コンパイルすることもできます。 RequiresEncryption は、プラグマ名前空間プリプロセッサ命令と共に MOF で使用されます。
次の手順では、暗号化された接続を必要とする名前空間を設定します。
必要な暗号化を設定するには
マネージド オブジェクト形式 (MOF) ファイルを作成するか、名前空間を定義する既存の MOF ファイルを変更します。
次のコード例は、変更される名前空間が root\MyNamespace で、ファイルの名前が MyNamespace_security.mof であることを示しています。 RequiresEncryption にはブール型があるため、 True または False に設定する必要があります。
#pragma namespace("\\\\.\\Root\\MyNamespace") [RequiresEncryption(TRUE)] instance of __systemSecurity { };mofcomp.exe を実行して MOF ファイルをコンパイルします。
c:\mofcomp MyNamespace_security.mof
C++ では、 IMoFCompiler メソッドを使用します。
DCOM は、WMI サービスが実行されている SVCHOST プロセスで必要なレベルにセキュリティをネゴシエートするため、WMI は既定の認証レベルを使用するクライアントを拒否します。 サービス ホストの詳細については、「 プロバイダーのホスティングとセキュリティ」を参照してください。 WMI 名前空間に接続するときの認証レベルの設定の詳細については、「C++ を使用した既定のプロセス セキュリティ レベルの設定」、C++ を使用した認証の設定、または VBScript を使用した既定のプロセス セキュリティ レベルの設定を参照してください。
非同期コールバック接続でデータを返すと、WMI はアクセス拒否メッセージを要求側のコンピューターに返します。 WMI は、セキュリティで保護された接続をクライアントに確立できないことを示す暗号化された名前空間を持つコンピューターの NT イベント ログにもログ エントリを作成します。
Windows Vista 以降では、WbemCore.log ファイルは存在しなくなりました。 NT イベント ログで、暗号化を必要とする名前空間への受信データ要求が拒否されたことを示すエントリを確認できます。
関連トピック