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 腳本內使用此模擬層級,但只在必要時才應該這麼做,因為它可能會造成安全性風險。 除非交易中涉及的所有使用者帳戶和電腦帳戶都標示為 [信任],才能使用委派模擬層級。 這有助於將安全性風險降至最低。 雖然遠端電腦可以使用您的認證,但只有在交易中涉及的任何其他電腦都信任委派時,才能這麼做。 |
如前所述,匿名模擬會隱藏您的認證,而且識別允許遠端物件查詢您的認證,但遠端物件無法模擬您的安全性內容。 (換句話說,雖然遠端物件知道您是誰,但無法「假設」您。) WMI 腳本使用這兩個設定之一來存取遠端電腦的 WMI 腳本通常會失敗。 事實上,大部分腳本都會使用這兩個設定之一在本機電腦上執行,也會失敗。
模擬允許遠端 WMI 服務使用您的安全性內容來執行要求的作業。 使用 [模擬] 設定的遠端 WMI 要求通常會成功,前提是您的認證有足夠的許可權可執行預期的作業。 換句話說,您無法使用 WMI 從遠端執行動作 (,或) 您沒有在 WMI 外部執行的許可權。
將 impersonationLevel 設定為 Delegate 可讓遠端 WMI 服務將認證傳遞至其他物件,且通常被視為安全性風險。
您可以將ImpersonationLevel屬性設定為所需的值,以設定SWbemServices、SWbemObject、SWbemObjectSet、SWbemObjectPath和SwbemLocator物件的模擬層級。 下列範例示範如何設定 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 |
| 類型程式庫 |
|
| DLL |
|
| CLSID |
CLSID_SWbemSecurity |
| IID |
IID_ISWbemSecurity |