Win32_Printer 類別的 GetSecurityDescriptor 方法

GetSecurityDescriptor方法會傳回控制印表機存取權的安全性描述項。 描述項會當做 Win32_SecurityDescriptor的實例傳回。 如需詳細資訊,請參閱 變更安全性實體物件的存取安全性

本主題使用 Managed 物件格式 (MOF) 語法。 如需使用此方法的詳細資訊,請參閱 呼叫方法

語法

uint32 GetSecurityDescriptor(
  [out] Win32_SecurityDescriptor Descriptor
);

參數

描述元 [out]

與印表機相關聯的安全描述項。

傳回值

傳回下列清單中所列的其中一個值,或傳回不同的值來表示錯誤。 如需其他錯誤碼,請參閱 WMI 錯誤常數WbemErrorEnum。 如需一般 HRESULT 值,請參閱 系統錯誤碼

0

成功完成。

2

使用者無法存取要求的資訊。

8

未知的失敗。

9

使用者沒有足夠的許可權可執行 方法。

21

方法呼叫中指定的參數無效。

備註

Win32_SecurityDescriptor實例代表SECURITY_DESCRIPTOR_CONTROL資料類型,並包含 DACL) (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 安全性描述元物件

變更安全性實體物件的存取安全性