Метод GetSecurityDescriptor класса Win32_Printer

Метод GetSecurityDescriptor возвращает дескриптор безопасности, управляющий доступом к принтеру. Дескриптор возвращается как экземпляр Win32_SecurityDescriptor. Дополнительные сведения см. в разделе Изменение безопасности доступа в защищаемых объектах.

В этом разделе используется синтаксис формата управляемого объекта (MOF). Дополнительные сведения об использовании этого метода см. в разделе Вызов метода.

Синтаксис

uint32 GetSecurityDescriptor(
  [out] Win32_SecurityDescriptor Descriptor
);

Параметры

Дескриптор [out]

Дескриптор безопасности, связанный с принтером.

Возвращаемое значение

Возвращает одно из значений, перечисленных в следующем списке, или другое значение, указывающее на ошибку. Дополнительные коды ошибок см. в разделе WMI Error Constants или WbemErrorEnum. Общие значения HRESULT см. в разделе Системные коды ошибок.

0

Успешное завершение.

2

У пользователя нет доступа к запрошенной информации.

8

Неизвестный сбой.

9

Пользователь не имеет достаточных привилегий для выполнения метода .

21

Параметр, указанный в вызове метода, недопустим.

Комментарии

Экземпляр Win32_SecurityDescriptor представляет SECURITY_DESCRIPTOR_CONTROL тип данных и содержит список управления доступом на уровне пользователей (DACL) и список управления доступом системы (SACL). Дополнительные сведения см. в разделе Списки контроль доступа.

Если параметр SeSecurityPrivilege не предоставляется или не включен при получении дескриптора безопасности, то в возвращаемом дескрипторе безопасности возвращается только DACL. Дополнительные сведения см. в разделах Константы привилегий и Выполнение привилегированных операций.

Примеры

В следующем примере кода VBScript перечислены принтеры, подключенные к локальному компьютеру, и возвращается дескриптор безопасности для каждого принтера. Затем записи управления доступом (ACE) в списке управления доступом ( DACL) извлекаются, чтобы определить, какие пользователи имеют доступ к принтеру.

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

Изменение безопасности доступа к защищаемым объектам