__SystemSecurity クラスの GetSD メソッド

GetSD メソッドは、ユーザーの接続先の名前空間のセキュリティ記述子を取得します。 このメソッドでは、バイナリ バイト配列形式のセキュリティ記述子が返されます。 スクリプトを記述する場合は、GetSecurityDescriptor メソッドを使用します。 詳細については、「WMI 名前空間のセキュリティ保護」と「セキュリティ保護可能なオブジェクトのアクセス セキュリティの変更」を参照してください。

ユーザーには READ_CONTROL アクセス許可が必要です 既定では、管理者はこのアクセス許可を持っています。 実際に使用されるセキュリティ記述子の唯一の部分は、随意アクセス制御リスト (DACL) です。 DACL には、継承された ACE と継承されていない ACE の両方を含めることができます。 拒否と許可の両方の ACE が許可されます。

C++ でプログラミングする場合は、SDDL と、変換メソッド ConvertSecurityDescriptorToStringSecurityDescriptor および ConvertStringSecurityDescriptorToSecurityDescriptor を使用してバイナリ セキュリティ記述子を操作できます。

構文

HRESULT GetSD(
  [out] uint8 SD[]
);

パラメーター

SD [out]

バイナリ バイト配列形式のセキュリティ記述子。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、GetSD において重要な戻り値を示しています。 スクリプト作成と Visual Basic アプリケーションの場合は、OutParameters.ReturnValue から結果を取得できます。 詳細については、「InParameters オブジェクトの構築と OutParameters オブジェクトの解析」を参照してください。

S_OK

メソッドが正常に実行されました。

WBEM_E_ACCESS_DENIED

呼び出し元に、このメソッドを呼び出すのに十分な権限がありません。

WBEM_E_METHOD_DISABLED

サポートされていないシステムでこのメソッドを実行しようとしました。

解説

名前空間のセキュリティをプログラムまたは手動で変更する方法の詳細については、「WMI 名前空間のセキュリティ保護」を参照してください。

次のスクリプトは、GetSD を使用して Root\Cimv2 名前空間の現在のセキュリティ記述子を取得し、それを DisplaySD に示されているバイト配列に変更する方法を示しています。

Set objServices = GetObject("winmgmts:root\cimv2")
Set CimV2 = objServices.Get("__SystemSecurity=@")
ReturnValue = Cimv2.GetSD(arrSD)

If Err <> 0 Then
   WScript.Echo "Method returned error " & ReturnValue
End If

DisplaySD = "SD = {"
For I = Lbound(arrSD) To Ubound(arrSD)

   DisplaySD = DisplaySD & arrSD(I)

   If I <> Ubound(arrSD) Then
      DisplaySD = DisplaySD & ","
   End If

Next

DisplaySD = DisplaySD & "}"

WScript.Echo DisplaySD

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
名前空間
すべての WMI 名前空間

関連項目

WMI システム クラス

__SystemSecurity

WMI セキュリティ定数

Win32_ACE

__SystemSecurity::SetSD

Security_Descriptor

Win32_SecurityDescriptor

WMI 名前空間のセキュリティ保護