使用c#中的Systems.directoryservices.AccountManagement解锁Active-Directory帐户

时间:2010-11-10 08:47:12

标签: c# active-directory account directoryservices unlock

我在解锁AD上的锁定帐户时遇到了一些问题。

我会保持简单。我假设帐户目前已被锁定。

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

通过PrincipalContext使用TEST AD上的管理员帐户返回oUserPrincipal

现在......

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)

1 个答案:

答案 0 :(得分:0)

您确定您使用的服务用户是否有权解锁帐户?我之前遇到过这样的情况:我们有一个服务用户具有管理员权限但在解锁帐户中被拒绝,如果您正在解锁的帐户拥有的权限高于解锁它的权限,我认为最好的方法测试它是否您自己的AD帐户具有解锁帐户的权限,首先在Active Directory用户和计算机中尝试解锁所述帐户,然后在成功时再次尝试使用您的代码。希望这是有道理的。