Win32_Printer 클래스의 GetSecurityDescriptor 메서드
GetSecurityDescriptor 메서드는 프린터에 대한 액세스를 제어하는 보안 설명자를 반환합니다. 설명자는 Win32_SecurityDescriptor instance 반환됩니다. 자세한 내용은 보안 개체에 대한 액세스 보안 변경을 참조하세요.
이 항목에서는 MOF(Managed Object Format) 구문을 사용합니다. 이 메서드를 사용하는 방법에 대한 자세한 내용은 메서드 호출을 참조하세요.
구문
uint32 GetSecurityDescriptor(
[out] Win32_SecurityDescriptor Descriptor
);
매개 변수
-
설명자 [out]
-
프린터와 연결된 보안 설명자입니다.
반환 값
다음 목록에 나열된 값 중 하나를 반환하거나 오류를 나타내는 다른 값을 반환합니다. 추가 오류 코드는 WMI 오류 상수 또는 WbemErrorEnum을 참조하세요. 일반적인 HRESULT 값은시스템 오류 코드를 참조하세요.
-
0
-
완료되었습니다.
-
2
-
사용자는 요청한 정보에 대한 액세스 권한이 없습니다.
-
8
-
알 수 없는 오류가 발생했습니다.
-
9
-
사용자에게 메서드를 실행할 수 있는 적절한 권한이 없습니다.
-
21
-
메서드 호출에 지정된 매개 변수가 잘못되었습니다.
설명
Win32_SecurityDescriptor 인스턴스는 SECURITY_DESCRIPTOR_CONTROL 데이터 형식을 나타내며 DACL(임의 액세스 제어 목록) 및 SACL(시스템 액세스 제어 목록)을 포함합니다. 자세한 내용은 액세스 제어 목록을 참조하십시오.
보안 설명자를 받을 때 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 |
|