Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Betik varsayılan WMI kimlik doğrulaması ve kimliğe bürünme ayarlarını kullanabilir. Ancak betiğin daha fazla güvenlik içeren bir bağlantıya ihtiyacı olabilir veya şifreli bağlantı gerektiren bir ad alanına bağlanabilir. Daha fazla bilgi için bkz . Ad Alanı Güvenlik Tanımlayıcılarını Ayarlama ve Ad Alanına Şifreli Bağlantı Gerektirme.
En basit durumda, bir betik varsayılan kimlik doğrulaması ve kimliğe bürünme ayarlarını kullanabilir. WMI normalde paylaşılan bir hizmet ana bilgisayarında çalışır ve konaktaki diğer işlemlerle aynı kimlik doğrulamasını paylaşır. WMI işlemini farklı bir kimlik doğrulama düzeyiyle çalıştırmak istiyorsanız, /standalonehost anahtarıyla winmgmt komutuyla WMI'yi çalıştırın ve wmi için kimlik doğrulama düzeyini genel olarak ayarlayın. Daha fazla bilgi için WMI Güvenliğinin Korunmasıkısmına bakın.
Aşağıdaki betik, kimliğe bürünme ve kimlik doğrulama düzeyleri için varsayılan ayarları kullanır.
strComputer = "."
Set objServices = GetObject("winmgmts:\\" _
& strComputer & "\root\CIMV2")
set objProcessSet = objServices.ExecQuery _
("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Ayrıca, aşağıdaki örnekte olduğu gibi GetObject çağrısında bir takma ad kullanabilir ve varsayılan güvenlik ayarlarını ayarlayabilirsiniz.
strComputer = "."
Set objServices = GetObject( _
"winmgmts:{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!root/cimv2")
set objProcessSet = objServices.ExecQuery _
("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Betikte farklı kimliğe bürünme veya kimlik doğrulama düzeyleri ayarlama veya bir bilgisayar için varsayılan değerleri ayarlama hakkında daha fazla bilgi için aşağıdaki konulara bakın:
- VBScript Kullanarak Varsayılan Kimlik Doğrulama Kimlik Bilgilerini Değiştirme
- VBScript Kullanarak Varsayılan Kimliğe Bürünme Ayarlarını Değiştirme
- Kayıt Defterini Kullanarak Varsayılan Yetkilendirme Düzeyini Ayarlama
- VBScript'te SWbemSecurity Nesnesine Erişme
- SWbemGüvenlik
VBScript Kullanarak Varsayılan Kimlik Doğrulama Kimlik Bilgilerini Değiştirme
Bir betikteki kimlik doğrulama düzeyini, bir tanımlayıcı dizesi ve SWbemLocator ve SWbemSecurity nesneleri kullanarak değiştirebilirsiniz.
Kimlik doğrulama düzeyi, bağlandığınız hedef işletim sisteminin gereksinimlerine göre ayarlanmalıdır. Daha fazla bilgi için bkz. Farklı İşletim Sistemleri Arasında Bağlanma.
Aşağıdaki VBScript kod örneği, "Server1" adlı uzak bir bilgisayardan boş alan verilerini alan bir betikte kimlik doğrulama düzeyinin nasıl değiştirileceğini gösterir.
strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{authenticationLevel=Pkt}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
"FreeSpace: " & vbTab & objDisk.FreeSpace
NextstrComputer = "."
Set objServices = GetObject( "winmgmts:{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!root/cimv2")
Set objProcessSet = objServices.ExecQuery("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Next
WMI ile betik takma adı bağlantılarında, aşağıdaki tablonun "Takma ad/açıklama" sütununda gösterilen kısa adı kullanın. Örneğin, aşağıdaki betikte kimlik doğrulama düzeyi WbemAuthenticationLevelPktIntegrity olarak ayarlanmıştır.
SetobjWMIService = GetObject( _
"winmgmts:{authenticationLevel=pktPrivacy}!root\cimv2")
Aşağıdaki tabloda, ayarlayabileceğiniz kimlik doğrulama düzeyleri listelenir. Bu düzeyler WbemAuthenticationLevelEnum numaralandırmasında Wbemdisp.tlb içinde tanımlanır.
| Ad/değer | Açıklama |
|---|---|
|
WbemAuthenticationLevelDefault 0 |
Takma Ad: Varsayılan WMI varsayılan Windows kimlik doğrulama ayarını kullanır. Bu, WMI'nin, verileri döndüren sunucunun gerektirdiği düzeyle anlaşmasına olanak tanıyan önerilen ayardır. Ancak, ad alanı şifreleme gerektiriyorsa WbemAuthenticationLevelPktPrivacy kullanın. |
|
WbemAuthenticationLevelNone (Kimlik Doğrulama Seviyesi Yok) 1 |
Takma Ad: Yok Kimlik doğrulaması kullanmaz. |
|
WbemAuthenticationLevelConnect 2 |
Takma Ad: Bağlan İstemcinin kimlik bilgilerini yalnızca istemci sunucuyla bir ilişki kurduğunda doğrular. |
|
WbemAuthenticationLevelCall 3 |
Çağrı Yalnızca sunucu isteği aldığında her çağrının başında kimlik doğrulaması yapar. |
|
WbemAuthenticationLevelPkt 4 |
Takma Ad: Pkt Alınan tüm verilerin beklenen istemciden geldiğini doğrular. |
|
WbemAuthenticationLevelPktIntegrity 5 |
Takma Ad: PktIntegrity İstemci ve sunucu arasında aktarılan verilerin hiçbirinin değiştirilmediğini doğrular. |
|
WbemAuthenticationLevelPktPrivacy 6 |
Takma Ad: PktPrivacy Daha önceki tüm taklit düzeylerini doğrular ve her bir uzak yordam çağrısının argüman değerini şifreler. Bağlandığınız ad alanı şifreli bir bağlantı gerektiriyorsa bu ayarı kullanın. |
Başarılı bir çağrı belirlemek için, kimlik doğrulama düzeyini değiştirdikten sonra dönüş değerini denetleyin.
Örneğin, yerel bağlantılar her zaman wbemAuthenticationLevelPktPrivacy kimlik doğrulama düzeyine sahip olduğundan, aşağıdaki örnek yerel bilgisayara bağlandığından kimlik doğrulama düzeyini ayarlayamıyor.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!" _
& "\\" & strComputer & "\root\cimv2")
Bir sağlayıcı, ad alanında, bu ad alanıyla bağlantınızda paket gizliliği (PktPrivacy) kullanmadığınız sürece veri döndürülmemesi için güvenliği ayarlayabilir. Bu, verilerin ağ üzerinden geçerken şifrelenmesini sağlar. Daha düşük bir kimlik doğrulama düzeyi ayarlamaya çalışırsanız erişim reddedildi iletisi alırsınız. Daha fazla bilgi için bkz . WMI Ad Alanlarının Güvenliğini Sağlama.
VBScript Kullanarak Varsayılan Kimliğe Bürünme Düzeylerini Değiştirme
WMI için Betik OLUŞTURMA API'sine çağrı yaptığınızda, WMI'nin kimliğe bürünme düzeyi için sağladığı varsayılan değerleri kullanmanız önerilir. Uzaktan çağrılar ve birden fazla ağ atlamalı bazı sağlayıcılar, WMI'nin kullandığından daha yüksek bir taklit etme düzeyi gerektirir. Kimliğe bürünme düzeyi yeterli değilse, sağlayıcı isteği reddedebilir veya eksik bilgi sağlayabilir.
Kimliğe bürünme düzeyini bir adla veya güvenliği sağlanabilir bir nesnede SWbemSecurity.ImpersonationLevel olarak ayarlamazsanız, işletim sistemi için varsayılan DCOM kimliğe bürünme düzeyini ayarlayın. Kimliğe bürünme düzeyi, bağlandığınız hedef işletim sisteminin gereksinimlerine göre ayarlanmalıdır. Daha fazla bilgi için bkz. Farklı İşletim Sistemleri Arasında Bağlanma.
Aşağıdaki VBScript kod örneği, yukarıda gösterilen betikte kimliğe bürünme düzeyinin nasıl değiştirildiğini gösterir.
strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
"FreeSpace: " & vbTab & objDisk.FreeSpace
Next
Aşağıdaki tabloda WbemImpersonationLevelEnum'da kullanılan kimlik doğrulama düzeyleri listelenir.
| Ad/değer | Açıklama |
|---|---|
|
wbemImpersonationLevelAnonymous 1 |
Takma Ad: Anonim Çağıranın kimlik bilgilerini gizler. WMI çağrıları bu kimliğe bürünme düzeyinde başarısız olabilir. |
|
wbemImpersonationLevelIdentify 2 |
Takma Ad: Belirle Nesnelerin çağıranın kimlik bilgilerini sorgulamasına izin verir. WMI çağrıları bu kimliğe bürünme düzeyiyle başarısız olabilir. |
|
wbemImpersonationLevelImpersonate 3 |
Takma Ad: Başkasıymış Gibi Davranmak Nesnelerin çağıranın kimlik bilgilerini kullanmasına izin verir. Bu, WMI çağrıları için Betik API'sinde önerilen kimliğe bürünme düzeyidir. |
|
wbemImpersonationLevelDelegate 4 |
Takma Ad: Temsilci Nesnelerin diğer nesnelerin çağıranın kimlik bilgilerini kullanmasına izin vermesine izin verir. Bu kimliğe bürünme, WMI çağrıları için Betik API'si ile çalışır, ancak gereksiz bir güvenlik riski oluşturabilir. |
Aşağıdaki örnekte, belirli bir Win32_Process örneği alınırken bir takma ad dizesinde kimliğe bürünme özelliğinin nasıl ayarlanacağı gösterilmektedir.
Set object = GetObject("winmgmts:{impersonationLevel=impersonate}!root\cimv2:Win32_Process.Handle='0'")
Daha fazla bilgi için bakınız WMI Uygulaması veya Betiğinin Oluşturulması.
Kayıt Defterini Kullanarak Varsayılan Kimlik Taklidi Seviyesini Ayarlama
Kayıt defterine erişiminiz varsa, varsayılan kimliğe bürünme düzeyi kayıt defteri anahtarını da ayarlayabilirsiniz. Bu anahtar, aksi belirtilmedikçe WMI için Betik Oluşturma API'sinin hangi kimliğe bürünme düzeyini kullandığını belirtir. Aşağıdaki yol kayıt defteri yolunu tanımlar.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Varsayılan Kimliğe Bürünme Düzeyi
Varsayılan olarak kayıt defteri anahtarı, Kimliğe bürünme düzeyini belirterek 3 olarak ayarlanır. Bazı sağlayıcılar daha yüksek bir kimliğe bürünme düzeyi gerektirebilir.
VBScript'te SWbemSecurity Nesnesine Erişme
Kimliğe bürünme düzeyini ayarlamanın diğer yolu, SWbemSecurity güvenlik nesnesidir; bu nesne Security_ özelliği olarak, SWbemServices, SWbemObject, SWbemObjectSet, SWbemEventSource, SWbemObjectPath ve SwbemLocator nesnelerinde görünür.
WMI, bir üst nesnenin güvenlik ayarını özgün nesnenin alt öğelerine geçirir. Bu nedenle, WMI'da oturum açtıktan sonra bir SWbemServices nesnesinin kimliğe bürünme düzeyini ayarlayabilir ve SWbemObject türündeki nesneler gibi bu nesneyi veya ondan oluşturulan nesneleri kullanarak API çağrıları yapabilirsiniz.