Вы используете .NET 3.5? Если да, перейдите в эту статью MSDN: Managing Directory Security Principals in the .NET Framework 3.5.
проверить эту статью CodeProject: Howto: (Almost) Everything In Active Directory via C#
Заканчивать этот list of Code Samples для System.DirectoryServices на MSDN.
Если вы серьезно о программировании Active Directory в C# или VB.NET, пойти и купить эту книгу:
The .NET Developer's Guide to Directory Services Programming
alt text http://ecx.images-amazon.com/images/I/512V652XBSL._SL500_AA240_.jpg
Обновление "полное имя" (на самом деле: DisplayName) должен быть таким же простым, как (на .NET 3.5):
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "yourDomain");
UserPrincipal up = UserPrincipal.FindByIdentity(ctx, "(your user name)");
if (up != null) // we found the user
{
up.DisplayName = "new display name for your user";
up.Save();
}
Всё! :-)
Имейте в виду: вам необходимо передать доменное имя NetBIOS (например, «MICROSOFT») - не имя DNS-типа (microsoft.com) для конструктора PrincipalContext.
Надеюсь, это поможет!
Марк
UPDATE для .NET 2.0:
Вот код, если вы работаете на .NET 2.0 и необходимо обновить "DISPLAYNAME" для пользователя, учитывая его "SAMAccountName" (его имя пользователя без домена, в основном):
// set the root for the search
DirectoryEntry root = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");
// searcher to find user in question
DirectorySearcher ds = new DirectorySearcher(root);
// set options
ds.SearchScope = SearchScope.Subtree;
ds.Filter = string.Format("(&(sAMAccountName={0})(objectCategory=Person))", yourUserName);
// do we find anyone by that name??
SearchResult result = ds.FindOne();
if (result != null)
{
// if yes - retrieve the full DirectoryEntry for that user
DirectoryEntry userEntry = result.GetDirectoryEntry();
// set the "displayName" property to the new value
userEntry.Properties["displayName"].Value = yourNewUserFullName;
// save changes back to AD store
userEntry.CommitChanges();
}
Спасибо, я принял его, но не пробовал, .net 3.5 не установлен, и мне сказали не запускать какой-либо код или ничего не делать с Это. Так что в основном у меня есть проблема, которую мне сказали исправить, а затем сказал, что я не могу исправить. Снова благодарим за помощь. – digital
какая версия .NET вы используете? 2,0? Я также обновляю свой пост с образцом для версии 2.0, это просто немного больше, чем хорошая версия 3.5. –