__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 名前空間 |