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
Win32_Printer.mof
DLL
CIMWin32.dll

추가 정보

Win32_Printer

권한 상수

WMI 보안 설명자 개체

보안 개체에 대한 액세스 보안 변경