add New user successfully
public static void AddUser(ADUser adUser)
{
// Local variables
DirectoryEntry oDE = null;
DirectoryEntry oDENewUser = null;
DirectoryEntries oDEs = null;
try
oDE = GetDirectoryEntry(GetADPath(PROD, adUser.UserType));
// 1. Create user account
oDEs = oDE.Children;
oDENewUser = oDEs.Add("CN=" + adUser.UserName, "user");
// 2. Set properties
SetProperty(oDENewUser, "givenName", adUser.FirstName);
SetProperty(oDENewUser, "sn", adUser.LastName);
SetProperty(oDENewUser, "mail", adUser.Email);
SetProperty(oDENewUser, "sAMAccountName", adUser.UserName);
oDENewUser.CommitChanges();
/// 4. Enable account
EnableAccount(oDENewUser);
// 3. Set password
//SetPassword(oDENewUser, adUser.Password);
SetPassword1(oDENewUser.Path, adUser.Password);
oDENewUser.Close();
oDE.Close();
}
catch (Exception ex)
throw ex;
} } I have try the following 2 SetPassword methods but getting error. Method 1.
internal static void SetPassword1(string path, string userPassword)
//Local variables
DirectoryEntry usr = null;
usr = new DirectoryEntry();
usr.Path = path;
usr.AuthenticationType = AuthenticationTypes.Secure;
object ret = usr.Invoke("SetPassword", userPassword);
usr.CommitChanges();
usr.Close();
internal static void SetPassword(DirectoryEntry de, string userPassword)
//DirectoryEntry usr = null;
string quotePwd;
byte[] pwdBin;
quotePwd = String.Format(@"""{0}""", userPassword);
pwdBin = System.Text.Encoding.Unicode.GetBytes(quotePwd);
de.Properties["unicodePwd"].Value = pwdBin;
de.CommitChanges();
//usr.Close();
} The exception raised ("Exception has been thrown by the target of an invocation.") Is there an easy way to tell if there is a problem with changing a password? Please reply me as soon as possible. Thanks.