Запись в каталоге - аккаунт активен - PullRequest
0 голосов
/ 28 апреля 2011

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

       private bool IsActive(DirectoryEntry de)
    {
        DirectoryEntry myEntry = GetDirectoryEntry();
        if (myEntry.NativeGuid == null) return false;

        int flags = (int)myEntry.Properties["userAccountControl"].Value;

        if (!Convert.ToBoolean(flags & 0x0002)) return true; else return false;

        return false;
    }
   private void SubmitData()
    {
        System.Guid guid = Guid.NewGuid();
        logInfo.IPaddress = IPAddress;

        if (!String.IsNullOrEmpty(txtUser.Text))
        {
            string username = txtUser.Text.ToString();
            if (IsActive(de) != false)
            {
                if (DateTime.Now.Subtract(passwordLastSet).TotalHours > 1)
                {
                    lblPasswordLastSet.Text = passwordLastSet.ToString();
                    lblStatus.Text = "all is good";
                }
                else
                {
                    lblStatus.Text = "oops, you reset your password less than 24 hours ago!";
                    lblPasswordLastSet.Text = passwordLastSet.ToString();
                }
            }
            else
            {
                lblStatus.Text = "your account is not active";
            }
        }
    }

1 Ответ

1 голос
/ 28 апреля 2011

Если вы используете .NET 3.5 и выше, вы должны проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM). Читайте все об этом здесь:

Управление принципами безопасности каталогов в .NET Framework 3.5

По сути, вы можете определить контекст домена и легко находить пользователей и / или группы в AD:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find user by name
UserPrincipal user = UserPrincipal.FindByIdentity("John Doe");

if(user != null)
{
   // check if account is locked out
   if(user.IsAccountLockedOut)
   {
      // do something if locked out....
   }
}

Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...