Win32_Printer クラスの GetSecurityDescriptor メソッド

GetSecurityDescriptor メソッドは、プリンターへのアクセスを制御するセキュリティ記述子を返します。 記述子は、 Win32_SecurityDescriptorのインスタンスとして返されます。 詳細については、「 セキュリティ保護可能なオブジェクトのアクセス セキュリティの変更」を参照してください。

このトピックでは、マネージド オブジェクト形式 (MOF) 構文を使用します。 このメソッドの使用方法の詳細については、「メソッドの 呼び出し」を参照してください。

構文

uint32 GetSecurityDescriptor(
  [out] Win32_SecurityDescriptor Descriptor
);

パラメーター

記述子 [out]

プリンターに関連付けられているセキュリティ記述子。

戻り値

次の一覧に記載されている値の 1 つ、またはエラーを示す別の値を返します。 その他のエラー コードについては、「 WMI エラー定数」 または 「WbemErrorEnum」を参照してください。 一般的な HRESULT 値については、「 システム エラー コード」を参照してください。

0

正常に完了しました。

2

ユーザーは、要求された情報にアクセスできません。

8

不明なエラー。

9

ユーザーには、 メソッドを実行するための適切な特権がありません。

21

メソッド呼び出しで指定されたパラメーターが無効です。

注釈

Win32_SecurityDescriptor インスタンスは、SECURITY_DESCRIPTOR_CONTROLデータ型を表し、随意アクセス制御リスト (DACL) とシステム アクセス制御リスト (SACL) を含みます。 詳細については、「Access Control リスト」を参照してください。

セキュリティ記述子を取得するときに SeSecurityPrivilege が許可または有効になっていない場合は、返されるセキュリティ記述子に DACL のみが返されます。 詳細については、「 特権定数 」および「特権 操作の実行」を参照してください。

例

次の VBScript コード例では、ローカル コンピューターに接続されているプリンターを一覧表示し、各プリンターのセキュリティ記述子を取得します。 その後、随意 アクセス制御 リスト (DACL) の アクセス制御 エントリ (ACE) が抽出され、プリンターにアクセスできるユーザーが判別されます。

SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE  = &h1

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate, (Security)}!\\" & strComputer & "\root\cimv2")

Set objWMIService = GetObject("winmgmts:")
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")

For Each objPrinter in colInstalledPrinters
   Wscript.Echo "Name: " & objPrinter.Name 
' Get security descriptor for printer
    Return = objPrinter.GetSecurityDescriptor( objSD )
    If ( return <> 0 ) Then
 WScript.Echo "Could not get security descriptor: " & Return
 wscript.Quit Return
    End If
' Extract the security descriptor flags
    intControlFlags = objSD.ControlFlags
    If intControlFlags AND SE_DACL_PRESENT Then
' Get the ACE entries from security descriptor
        arrACEs = objSD.DACL
    For Each objACE in arrACEs
' Get all the trustees and determine which have access to printer
        WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
        If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
            WScript.Echo vbTab & "User has access to printer"
        ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
            WScript.Echo vbTab & "User does not have access to the printer"
        End If
    Next
    Else
    WScript.Echo "No DACL found in security descriptor"
End If
Next

要件

要件 値
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
名前空間
Root\CIMV2
MOF
Win32_Printer.mof
[DLL]
CIMWin32.dll

こちらもご覧ください

Win32_Printer

特権定数

WMI セキュリティ記述子オブジェクト

セキュリティ保護可能なオブジェクトのアクセス セキュリティの変更