Разблокировать учетную запись Active-Directory с помощью Systems.directoryservices.AccountManagement в С#

У меня возникают проблемы при разблокировке заблокированной учетной записи в AD.

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

UserPrincipal oUserPrincipal = ADMethods.GetUser("test.user");  
oUserPrincipal.UnlockAccount();  
oUserPrincipal.Save();`

oUserPrincipal возвращается с использованием учетной записи администратора в TEST AD через PrincipalContext.

В настоящее время ..

oUserPrincipal.UnlockAccount(); генерирует исключение

System.UnauthorizedAccessException

При проверке журналов на «Тестовом сервере AD» возвращается сообщение о неудачном согласовании, в котором говорится, что «test.user» заблокирован. Поскольку я возвращаю участника-пользователя, используя учетную запись администратора, почему метод unlockAccount генерирует ошибку?

Был бы признателен за вашу помощь.

Исключение следующее.

System.UnauthorizedAccessException: Access is denied.

   at System.DirectoryServices.Interop.UnsafeNativeMetho  ds.IAds.SetInfo()
   at System.DirectoryServices.DirectoryEntry.CommitChan  ges()
   at System.DirectoryServices.AccountManagement.SDSUtil  s.WriteAttribute(String dePath, String attribute, Int32 value, NetCred credentials, AuthenticationTypes authTypes)
   at System.DirectoryServices.AccountManagement.ADStore  Ctx.WriteAttribute(Principal p, String attribute, Int32 value)
   at System.DirectoryServices.AccountManagement.ADStore  Ctx.UnlockAccount(AuthenticablePrincipal p)
   at System.DirectoryServices.AccountManagement.Account  Info.UnlockAccount()
   at ADMethodsAccountManagement.UnlockUserAccount(Strin  g sUserName) in C:\Users\christian.debono\documents\visual studio 2010\Projects\UnlockApp\UnlockApp\ADMethodsAccount  Management.cs:line 182
   at UnlockApp.Form1.UnlockButton_Click(Object sender, EventArgs e) in C:\Users\christian.debono\documents\visual studio 2010\Projects\UnlockApp\UnlockApp\Form1.cs:line 30
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventAr  gs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.O  nMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.W  ndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

person christiandbn    schedule 10.11.2010    source источник
comment
Это: Доступ запрещен. , кажется само собой разумеющимся.   -  person Mitch Wheat    schedule 10.11.2010
comment
да, но я запускаю исполняемый файл с правами администратора, а учетная запись службы, которую я использую, является администратором на сервере и в AD. Я могу использовать учетную запись для входа на сервер вручную и внесения изменений, но не через этот код. Есть идеи, почему это вызывает исключение «Отказано в доступе»?   -  person christiandbn    schedule 12.11.2010


Ответы (1)


Вы уверены, что у используемого вами Сервисного пользователя есть права на разблокировку учетных записей? Раньше у меня была ситуация, когда у нас есть пользователь службы с правами администратора, но ему было отказано в разблокировке учетных записей, также если учетная запись, которую вы разблокируете, имеет более высокие разрешения, чем та, которая разблокирует ее, что также не будет работать, я думаю, лучший способ чтобы проверить это, если ваша собственная учетная запись AD имеет привилегию разблокировать учетную запись, попробуйте сначала ее в Active Directory Users and Computer, разблокировав указанную учетную запись, а затем, в случае успеха, повторите попытку с вашим кодом. Надеюсь, это имеет смысл.

person Raymund    schedule 18.11.2010