SWbemSecurity.ImpersonationLevel 屬性

ImpersonationLevel屬性是一個整數,定義指派給這個物件的 COM 模擬層級。 此設定可判斷 Windows Management Instrumentation 所擁有的進程是否 (WMI) 在呼叫其他進程時偵測或使用您的安全性認證。 如需模擬層級的詳細資訊,請參閱 設定Client_Application_Process安全性

如果您未特別在 Moniker 中設定模擬層級,或在安全性實體物件上設定 SWBemSecurity.ImpersonationLevel 屬性,WMI 會將預設模擬層級設定為 預設模擬層級登錄機碼中指定的值。 如果此設定不夠,提供者不會為您的要求提供服務,而 WMI API 的呼叫可能會失敗,並出現 wbemErrAccessDenied (2147749891/0x80041003) 的錯誤碼。

如需此語法的說明,請參閱 腳本 API 的檔慣例

這是可讀寫的屬性。

Syntax

SWbemSecurity.ImpersonationLevel As Integer

屬性值

備註

作為 DCOM 模擬層級,此屬性可以設定為下列其中一個值:

描述
匿名 隱藏呼叫端的認證。 WMI 實際上不支援此模擬層級;如果腳本指定 impersonationLevel=Anonymous,WMI 會以無訊息方式將模擬層級升級為 [識別]。 不過,這在某些方面是無意義的練習,因為使用識別層級的腳本可能會失敗。
識別 可讓 物件查詢呼叫端的認證。 使用此模擬層級的腳本可能會失敗;[識別] 層級通常可讓您執行檢查存取控制清單以外的動作。 您將無法使用 [識別] 對遠端電腦執行腳本。
Impersonate 讓物件能夠使用呼叫端的認證。 建議您搭配 WMI 腳本使用此模擬層級。 當您這樣做時,WMI 腳本會使用您的使用者認證;因此,它將能夠執行任何能夠執行的工作。
代理人 讓物件允許其他物件使用呼叫端的認證。 委派可讓腳本在遠端電腦上使用您的認證,然後讓遠端電腦在另一部遠端電腦上使用該認證。 雖然您可以在 WMI 腳本內使用此模擬層級,但只有在需要時,才應該這麼做,因為它可能會造成安全性風險。
除非交易中涉及的所有使用者帳戶和電腦帳戶都標示為 Active Directory 中的委派受信任,否則您無法使用委派模擬層級。 這有助於將安全性風險降至最低。 雖然遠端電腦可以使用您的認證,但只有在它和任何涉及交易的其他電腦都信任委派時,才能這麼做。

如前所述,匿名模擬會隱藏您的認證,並識別允許遠端物件查詢您的認證,但遠端物件無法模擬您的安全性內容。 (換句話說,雖然遠端物件知道您是誰,但無法「假設」是您。) WMI 腳本使用這兩種設定之一存取遠端電腦的 WMI 腳本通常會失敗。 事實上,大部分腳本都會使用這兩個設定之一在本機電腦上執行,也會失敗。

模擬允許遠端 WMI 服務使用您的安全性內容來執行要求的作業。 使用模擬設定的遠端 WMI 要求通常會成功,前提是您的認證有足夠的許可權可執行預期的作業。 換句話說,您無法使用 WMI 從遠端執行動作 (,或) 您沒有在 WMI 外部執行的許可權。

將 impersonationLevel 設定為 Delegate 可讓遠端 WMI 服務將認證傳遞至其他物件,而且通常被視為安全性風險。

您可以將ImpersonationLevel屬性設定為所需的值,以設定SWbemServicesSWbemObject、SWbemObjectSet、SWbemObjectPathSwbemLocator物件的模擬層級。 下列範例示範如何設定 SWbemObject 物件的模擬層級:

objinstance.Security_.ImpersonationLevel = _
    wbemImpersonationLevelImpersonate

您也可以將模擬層級指定為 Moniker 的一部分。 下列範例會設定驗證層級和模擬層級,並擷取 Win32_Service的實例。

Set objinst = GetObject("WinMgmts:{impersonationLevel=impersonate,"& _
                         "authenticationLevel=pktPrivacy}"& _
                         "!root/cimv2:Win32_service='ALERTER'")

規格需求

需求
最低支援的用戶端
Windows Vista
最低支援的伺服器
Windows Server 2008
類型程式庫
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemSecurity
IID
IID_ISWbemSecurity

另請參閱

SWbemSecurity

設定Client_Application_Process安全性

WbemImpersonationLevelEnum