次の方法で共有


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 セキュリティ記述子オブジェクト

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