by
Roland Schumacher alias GENiALi
23. Januar 2007 -- 69
words -- 86 mal gelesen
Einwenig Code habe ich natürlich auch produziert.
Das meiste mit Hilfe des Internet und einem Forum.
/// <summary>
/// Ermittelt ob das Passwort abgelaufen ist.
/// </summary>
private bool IsPasswordExpired(DirectoryEntry User)
{
const int ADS_UF_PASSWORD_EXPIRED = 0x80000;
int val = (int)User.Properties["userAccountControl"].Value;
return (val & ADS_UF_PASSWORD_EXPIRED) == ADS_UF_PASSWORD_EXPIRED;
}
/// <summary>
/// Ermittelt ob das Konto deaktiviert ist.
/// </summary>
private bool IsAccountDisabled(DirectoryEntry User)
{
const int ADS_UF_ACCOUNTDISABLE = 0x2;
int val = (int)User.Properties["userAccountControl"].Value;
return (val & ADS_UF_ACCOUNTDISABLE) == ADS_UF_ACCOUNTDISABLE;
}
/// <summary>
/// Ermittelt ob das Passwort abgelaufen ist.
/// </summary>
private bool IsExpirePassword(DirectoryEntry User)
{
const int ADS_UF_DONT_EXPIRE_PASSWD = (int)ADS_USER_FLAG.ADS_UF_DONT_EXPIRE_PASSWD;
int val = (int)User.Properties["userAccountControl"].Value;
return (val & ADS_UF_DONT_EXPIRE_PASSWD) == ADS_UF_DONT_EXPIRE_PASSWD;
}
/// <summary>
/// Setzt das Passwort so, dass es nie Abläuft
/// this.DeUser = new DirectoryEntry(this.DN, g_AuthUserName, g_AuthPassword);
/// </summary>
public void DontExpirePassword()
{
const int ADS_UF_DONT_EXPIRE_PASSWD = 0x10000;
int val = (int)this.DeUser.Properties["userAccountControl"].Value;
this.DeUser.Properties["userAccountControl"].Value = val | ADS_UF_DONT_EXPIRE_PASSWD;
this.DeUser.CommitChanges();
//this.IstPasswortNieAblaufend = true;
}
/// <summary>
/// this.DeUser = new DirectoryEntry(this.DN, g_AuthUserName, g_AuthPassword);
/// this.AdUser = (IADsUser)this.DeUser.NativeObject;
/// </summary>
public void UnlockAccount()
{
this.AdUser.IsAccountLocked = false;
this.AdUser.SetInfo();
}
Bei dieser Methode war das ~ (zweitletzte Zeile) ein Problem. Dauerte lange bis ich merkte
wie diese Bitoperation genau tut. Wenn ich ehrlich bin weiss ich es auch jetzt noch nicht. :-)
/// <summary>
/// this.DeUser = new DirectoryEntry(this.DN, g_AuthUserName, g_AuthPassword);
/// </summary>
public void EnabelAccount()
{
const int ADS_UF_ACCOUNTDISABLE = 0x2;
int val = (int)this.DeUser.Properties["userAccountControl"].Value;
this.DeUser.Properties["userAccountControl"].Value = val & ~ADS_UF_ACCOUNTDISABLE;
this.DeUser.CommitChanges();
}
Alle Angaben ohne Gewähr! :-)