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 安全性描述元物件

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