winforms - puede - quitar contraseña de administrador
Acceso denegado al intentar cambiar la contraseña de c# (1)
Escribí una herramienta que permite a los usuarios cambiar su contraseña de AD. Esta herramienta funciona sin problemas en el dominio de mi empresa, pero cuando la ejecuto en nuestra máquina de clientes con citrix recibo el siguiente mensaje de error:
System.Reflection.TargetInvocationException: la excepción ha sido lanzada por el objetivo de una invocación. ---> System.UnauthorizedAccessException: Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)) --- Fin de la pila de excepción interna trace --- en System.DirectoryServices.DirectoryEntry.Invoke (String methodName, Object [] args) en System.DirectoryServices.AccountManagement.SDSUtils.ChangePassword ( DirectoryEntry de, String oldPassword, String newPassword) en System.DirectoryServices.AccountManagement.ADStoreCtx.ChangePassword (AuthenticablePrincipal p, String oldPassword, String newPassword) en CitrixPWChangeBackend.ActiveDirectory.ChangePasswordForCurrentUser (String oldPw, String newPw, Boolean & errorWrongPw, Boolean & errorPasswordRules, String & errorMessage )
La línea que causa ese error es:
UserPrincipal.Current.ChangePassword(oldPw, newPw);
"oldPW" es correcto, por supuesto
El motivo "mágico" era una política para ese usuario que causaba que la propiedad "UserCannotChangePassword" fuera verdadera. Sin problema específico de Citrix.