(Блокируйте/разблокируйте) Состояние Учетной записи пользователя от Active Directory на До-диезе / C#

да, у вас есть метод формы, подобный:

<form method="post OR get">
</form>

, а также имя элемента, потому что имя элемента используется для публикации значения этого элемента.

5
задан Joel Coehoorn 4 April 2009 в 00:27
поделиться

3 ответа

Вот ссылка со всей информацией о материале Active Directory...

http://www.codeproject.com/KB/system/everythingInAD.aspx

3
ответ дан 14 December 2019 в 19:25
поделиться

После наблюдения.NET 1.1, проверьте этот поток: http://forums.asp.net/t/434077.aspx, с помощью lockouttime в фильтре должен все еще добиться цели.

Конкретно в потоке (после того, как большее сообщение кода, которое обеспечивает много синтаксиса):

(&(objectClass=user)(objectCategory=person)(lockoutTime>=1)); 

Еще одна вещь, оказывается, что при использовании.NET v.1.1, затем S.DS преобразовывает Integer8 в длинное целое правильно для Вас (не работает с 1,0) - что означает, что можно покончить с отражательным кодом (в сообщении):

//use the filter from above

SearchResultCollection src = ds.FindAll();  

foreach(SearchResult sr in src)

{

     DateTime lockoutTime = DateTime.FromFileTime((long)sr.Properties["lockoutTime][0]);

     Response.Output.Write("Locked Out on: {0}", lockoutTime.ToString());

}
0
ответ дан 14 December 2019 в 19:25
поделиться

Найденный этим, это немного больше, чем я сделал в прошлом (не может найти точные отрывки), хотя ключ делает поиск каталога и ограничивает на основе lockouttime для Вашего пользователя (пользователей), которые возвращаются. Дополнительно для конкретного пользователя, можно ограничить поиск далее использующие дополнительные свойства. Ссылка codeproject выше имеет ту конкретную логику (для ограничения поиска), я верю.

class Lockout : IDisposable
{
  DirectoryContext context;
  DirectoryEntry root;
  DomainPolicy policy;

  public Lockout(string domainName)
  {
    this.context = new DirectoryContext(
      DirectoryContextType.Domain,
      domainName
      );

    //get our current domain policy
    Domain domain = Domain.GetDomain(this.context);

    this.root = domain.GetDirectoryEntry();
    this.policy = new DomainPolicy(this.root);      
  }

  public void FindLockedAccounts()
  {
    //default for when accounts stay locked indefinitely
    string qry = "(lockoutTime>=1)";

    TimeSpan duration = this.policy.LockoutDuration;

    if (duration != TimeSpan.MaxValue)
    {
      DateTime lockoutThreshold =
        DateTime.Now.Subtract(duration);

      qry = String.Format(
        "(lockoutTime>={0})",
        lockoutThreshold.ToFileTime()
        );
    }

    DirectorySearcher ds = new DirectorySearcher(
      this.root,
      qry
      );

    using (SearchResultCollection src = ds.FindAll())
    {
      foreach (SearchResult sr in src)
      {
        long ticks =
          (long)sr.Properties["lockoutTime"][0];

        Console.WriteLine(
          "{0} locked out at {1}",
          sr.Properties["name"][0],
          DateTime.FromFileTime(ticks)
          );
      }
    }
  }

  public void Dispose()
  {
    if (this.root != null)
    {
      this.root.Dispose();
    }
  }
}

Код вытянули из этого сообщения: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5e0fadc2-f27b-48f6-a6ac-644e12256c67/

2
ответ дан 14 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: