2013-10-27 2 views
2

При использовании DirectoryEntry можно установить CN новой учетной записи пользователя, но как это сделать, используя UserPrincipal? Свойство только для чтения.Настройка DistinguishedName с использованием UserPrincipal

// From : http://msdn.microsoft.com/en-us/magazine/cc135979.aspx 
DirectoryEntry container = new DirectoryEntry("LDAP://ou=TechWriters,dc=fabrikam,dc=com"); 

// create a user directory entry in the container 
DirectoryEntry newUser = container.Children.Add("cn=user1Acct", "user"); 
// add the samAccountName mandatory attribute 
newUser.Properties["sAMAccountName"].Value = "User1Acct"; 
// save to the directory 
newUser.CommitChanges(); 

Но использование UserPrincipal:

// For the example 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, "ou=TechWriters,dc=fabrikam,dc=com") 
{ 
    using (UserPrincipal user = new UserPrincipal(ctx, "User1Acct", "pwd", true)) 
    { 
     // I would like to do : 
     user.DistinguishedName = "user1Acct"; 
     // 
     user.Save(); 
    } 
} 

ответ

2

Не ответ, который вы хотите, но к моему знанию это не выполним, что путь ... The CN является 'защищенным' Ом класса userprinciple, так как слишком много в другом месте полагается на то, что это стабильная информация.

Я не знаю, почему можно было бы смешивать вещи, но вы можете попробовать это:

using (var ctx = new PrincipalContext(ContextType.Domain, null, "ou=TechWriters,dc=fabrikam,dc=com")) 
     { 
      using (var user = new UserPrincipal(ctx, "User1Acct", "pwd", true)) 
      { 
       user.Save(); 
      } 

      using (var entry = new DirectoryEntry("LDAP://cn=User1Acct;ou=TechWriters,dc=fabrikam,dc=com",null,null,AuthenticationTypes.Secure)) 
      { 
       entry.Rename("cn=user1Acct"); 
      } 
     } 

(Возможно получение строки LDAP из userPrinciple вместо жесткого кодирования)

у меня нет возможность проверить это, хотя ..

Смежные вопросы