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 |
|
[DLL] |
|