2009-07-29 11 views
6

Załóżmy, że został podłączony do usługi Active Directory przy użyciu simiple składnię:Jak wyczyścić atrybut obiektu użytkownika w usłudze Active Directory?

string adPath = "LDAP://server.domain.com/CN=John,CN=Users,dc=domain,dc=com"; 
DirectoryEntry userEntry = Settings.GetADEntry(adPath); 

Teraz chcesz zobaczyć atrybut dla tego użytkownika, powiedzmy atrybut mail:

Console.WriteLine("User's mail attribute is " + userEntry.Properties["mail"]); 

Teraz w jaki sposób można usunąć wartość atrybutu mail?

Odpowiedz

13

Okazuje się, że jest dość proste, choć niezbyt często używane ...

string adPath = "LDAP://server.domain.com/CN=John,CN=Users,dc=domain,dc=com";DirectoryEntry userEntry = Settings.GetADEntry(adPath); 
userentry.Properties["mail"].Clear(); 
userentry.CommitChanges(); 
+0

Idealne rozwiązanie bez konieczności używania Invoke z nazwą metody. Twoje zdrowie! – jamesbar2

+0

Lata później i nadal przydatne w krytycznym scenariuszu. Pozdrowienia. –

+1

Dziękuję! Zastanawiam się, dlaczego .Clear() działa, ale używając userentry.Properties ["mail"]. Wartość = "" nie działa. –

0

Nie jestem pewien, że można go usunąć, ponieważ obiekty użytkowników są zwykle schemat firmy, ale może coś jak poniżej będzie działać:

userEntry.Properties["mail"] = null; 

czy może:

userEntry.Invoke("Put", "mail", null); 

następnie:

userEntry.CommitChanges(); 
Powiązane problemy