1. ホーム
  2. c#

ユーザーアカウントが有効か無効かを判断する方法

2023-10-15 11:10:12

質問

私は、繰り返される事務的な仕事を解決するために、C#のwinフォームアプリを素早く組み立てているところです。

私はADですべてのユーザーアカウントを検索し、チェックボックス付きのリストビューにそれらを追加しています。

私は listviewitems のデフォルトのチェック状態を、アカウントの有効/無効の状態に依存するようにしたいと思います。

string path = "LDAP://dc=example,dc=local";
DirectoryEntry directoryRoot = new DirectoryEntry(path);
DirectorySearcher searcher = new DirectorySearcher(directoryRoot,
    "(&(objectClass=User)(objectCategory=Person))");
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
    DirectoryEntry de = result.GetDirectoryEntry();
    ListViewItem lvi = new ListViewItem(
        (string)de.Properties["SAMAccountName"][0]);
    // lvi.Checked = (bool) de.Properties["AccountEnabled"]
    lvwUsers.Items.Add(lvi);
}

DirectoryEntryオブジェクトからアカウントの状態を取得するためにパースする正しい属性を見つけるのに苦労しています。私は以下を検索しました。 AD ユーザー属性 で検索しましたが、有用なものは見つかりませんでした。

どなたかポインターを提供していただけませんか?

どのように解決するのですか?

このコードは動作するはずです...

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

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

  return !Convert.ToBoolean(flags & 0x0002);
}