.NET и Active Directory - System.Exception: ошибка общего доступа запрещена - PullRequest
0 голосов
/ 31 марта 2011

Я получаю эту ошибку, когда пытаюсь создать нового пользователя.

Это часть моего кода, которая выдает мне ошибку:

Public Function CreateAdAccount(ByVal sUserName As String, ByVal sPassword As String, ByVal sFirstName As String, ByVal sLastName As String, ByVal sGroupName As String) As Boolean
   Dim bResult As Boolean = True
   Dim dirEntry As New DirectoryEntry(ADFullPath)

   SetCultureAndIdentity()

   ' 1. Create user account
   Dim adUsers As DirectoryEntries
   Dim newUser As DirectoryEntry

   If Not UserExists(sUserName) Then
      Try
         adUsers = dirEntry.Children
         newUser = adUsers.Add("CN=" & sUserName, "user")

         ' 2. Set properties
         SetProperty(newUser, "givenname", sFirstName)
         SetProperty(newUser, "sn", sLastName)
         SetProperty(newUser, "SAMAccountName", sUserName)
         SetProperty(newUser, "userPrincipalName", sUserName)
         SetProperty(newUser, "displayName", sFirstName & " " & sLastName)

         Try
            newUser.CommitChanges()
         Catch ex As Exception
            Err.Raise(4938, "clsSource", ex.Message)
         End Try

Ошибка происходит на этомстрока: newUser.CommitChanges()

Я не могу понять, почему он продолжает ломаться.Я попытался войти в систему как администратор в AD и создать нового пользователя.все работало нормально ...

1 Ответ

0 голосов
/ 31 марта 2011

Если вы используете .NET 3.5 и выше, вы должны проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM). Читайте все об этом здесь:

Управление принципами безопасности каталогов в .NET Framework 3.5

По сути, вы можете определить контекст домена и легко создавать новых пользователей:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// create a new user
UserPrincipal newUser = new UserPrincipal(ctx);

// define properties
newUser.GivenName = sFirstName;
newUser.Surname = sLastName;
newUser.SamAccountName = sUserName;
newUser.UserPrincipalName = sUserName;
newUser.DisplayName = sFirstName + " " + sLastName;

// save changes
newUser.Save();

Я не уверен, что у вас есть в sUserName - но свойство .UserPrincipalName всегда должно быть чем-то вроде someuser@somedomain.com - ваше имя пользователя содержит такое значение? Если нет - возможно, попробуйте использовать такую ​​запись для имени пользователя.

Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...