2010-11-26 19 views
8

Bu sabah Active Directory nesne sunucusunda var olup olmadığını kontrol etmek gerekir güzel bir yöntem (DirectoryEntry.Exists), keşfetti. Bu yüzden bir basit ile çalıştı:Nasıl kimlik bilgileriyle DirectoryEntry.Exists sağlamaktır?

if (DirectoryEntry.Exists(path)) {} 

Tabii ki onunla kimlik bilgilerini sağlamak için herhangi bir aşırı yüklenmeleri yoksundur.

Oturum açma hatası: Bilinmeyen kullanıcı adı veya kötü şifreyi kimlik bilgileri bu özel durumu almak sağlanmazsa, Çünkü. (System.DirectoryServices.DirectoryServicesCOMException)

bana AD sunucuda kodumu kimliğini doğrulamak için imkanı verir başka bir seçenek var mı? Ya da bir nesnenin varlığını kontrol etmek için? süreci koştu kullanıcı DirectoryEntry.Exists çağırmak için gerekli izinlere sahip değilse

cevap

13

sağlamaz:

DirectoryEntry directoryEntry = new DirectoryEntry(path); 
directoryEntry.Username = "username"; 
directoryEntry.Password = "password"; 

bool exists = false; 
// Validate with Guid 
try 
{ 
    var tmp = directoryEntry.Guid; 
    exists = true; 
} 
catch (COMException) 
{ 
    exists = false; 
} 
+0

benim tercih çözümü olur, ancak bu özellik bir göz, bana statik görünmüyor Yani: Ah http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.username.aspx –

+0

Nevermind'i görüyorum. Evet, yeni bir DirectoryEntry kurmak zorundasın. Düzenlenen. – JoeBilly

+0

Güzel bir kod örneği için teşekkürler. Anlaşılan tek yol bu. Bu varsayılan olarak mümkün olmayan bir pisi.net yöntemleri, ama en azından güzel bir çözüm işi yapar! –

0

, o zaman bürünme kullanabilirsiniz.

Bu yararlı olabilir (AD bağlamda bürünme anlatılır): http://www.codeproject.com/KB/system/everythingInAD.aspx

Btw, zaten bu kullanıcıyla Telefonum, neden sadece süreç erişimi olan bir kullanıcının kimlik bilgilerini varsa (örneğin /olarak çalıştırmak)? İşte

+0

Teşekkürler. Aynı şeyi beğendim ama bana sorunum için bir iniş çözümü sunmuyor. Şu anki projemde Runas gerçekten bir seçenek değil ... Kimliğe bürünme, ama şimdiye kadarki en iyi gözüküyor. –

1

Yani soruya cevap: imkansız.

Son olarak belirtilen kimlik bilgileriyle, distinguised adıyla DirectoryEntry almak için kendi yöntemini yazın. Her iki varlık/varoluş durumunda da bir DirectoryEntry örneği aldım. Geri dönen geçerli bir nesne olup olmadığını kontrol etmek için bir istisna sonuçlanıp sonuçlanmadığını görmek için basit bir deneme yapalım. Öyleyse, geçersiz.

Pis çek, ama işe yarıyor. Çok kötü varsayılan .net yöntemi DirectoryEntry.Exists Dediğin gibi statik yöntem Var sen kullanamazsınız Bu durumda sadece DirectoryEntry kurucusuna gibi kimlik bilgilerini sağlamak için bir aşırı yük ...

İlgili konular