マイナーでもいいよね??

殆どVB系、でも .NET じゃない VB は知らないよん

目次

Blog 利用状況

書庫

日記カテゴリ

所属しているすべてのグループを表示する画面のWindowsアプリのコード(C#)

所属しているすべてのグループを表示する画面の Windows アプリの C# のコードです。

//プライベートフィールド

private readonly DomainObject member;   //メンバー

private readonly Dictionary<string, DomainGroup> allGroups;   //全グループ(Key:distinguishedName)

private readonly List<string> addedDisplayNames;  //リストに追加したグループの表示テキスト

 

//パブリックコンストラクター

public InRoleGroupList(DomainObject member)

{

  InitializeComponent();

  this.member = member;

  allGroups = DirectoryAccess.GetGroups<DomainGroup>().ToDictionary(

    group => group.Entry.Properties["distinguishedName"].Value.ToString(), group => group);

  addedDisplayNames = new List<string>();

  this.AddChildNode();  //子ノードを追加

  this.GroupListBox.DataSource = addedDisplayNames;

  this.ViewPanel.Enabled = addedDisplayNames.Count > 1;

  this.GroupTreeView.ExpandAll();

}

 

//イベントハンドラ

//TreeRadioButton, ListRadioButton

private void RadioButton_CheckedChanged(object sender, EventArgs e)

{

  this.GroupTreeView.Visible = sender == this.TreeRadioButton;

  this.GroupListBox.Visible = !this.GroupTreeView.Visible;

}

 

//プライベートメソッド

//子ノードを追加

private void AddChildNode()

{

  var imageIndex = (int)member.Category;

  var node = new TreeNode(member.ToString(), imageIndex, imageIndex);

  this.GroupTreeView.Nodes.Add(node);

  if ((member.Category == CategoryType.User) || (member.Category == CategoryType.Computer))

  {

    //プライマリー グループを追加

    var primaryGroupId = (member.Category == CategoryType.User) ?

      ((DomainUser)member).PrimaryGroupId : ((Computer)member).PrimaryGroupId;

    var group = allGroups.Values.Cast<DomainGroup>().Single(grp => grp.Token == primaryGroupId);

    this.AddChildNode(node, group);   //子ノードを追加

  }

  //所属するグループを追加

  foreach (string memberOf in member.Entry.Properties["memberOf"])

  {

    this.AddChildNode(node, allGroups[memberOf]);   //子ノードを追加

  }

}

 

//子ノードを追加

private void AddChildNode(TreeNode node, DomainGroup group)

{

  var childNode = CreateNode(group);  //ノードを作成

  node.Nodes.Add(childNode);

  if (addedDisplayNames.Contains(childNode.Text) == false)

  {

    addedDisplayNames.Add(childNode.Text);  //表示するテキストを追加

  }

  //ネストしているグループを追加

  foreach (string memberOf in group.Entry.Properties["memberOf"])

  {

    this.AddChildNode(childNode, allGroups[memberOf]);  //子ノードを追加

  }

}

 

//指定したグループのノードを作成

private TreeNode CreateNode(DomainGroup group)

{

  var displayName = String.Format("{0}({1})", group.Name, group.Scope);   //表示するテキスト

  var fontColor = Color.Black;

  switch (group.ScopeType)

  {

    case DomainGroupScopeType.DomainLocal:

      fontColor = Color.Blue;

      break;

    case DomainGroupScopeType.Global:

      fontColor = Color.Green;

      break;

    case DomainGroupScopeType.Universal:

      fontColor = Color.Brown;

      break;

  }

  return new TreeNode(displayName) { Name = group.Name, ForeColor = fontColor };

}

 

Dispose メソッドに次のコードを追加しました。

DirectoryAccess.DisposeItems(allGroups.Values);

 

内容の説明は VB の方に書いてますのでそちらをご覧ください。

 

 

Active Directory 関連 Blog

http://www.pbyk.com/blog/bloglist.html

投稿日時 : 2015年1月8日 22:06

コメントを追加

# ivermectin purchase http://stromectolabc.com/
stromectol tablets 2022/02/08 9:39 Busjdhj

ivermectin purchase http://stromectolabc.com/
stromectol tablets

# online doxycycline https://doxycyline1st.com/
doxycycline 150 mg 2022/02/26 8:29 Doxycycline

online doxycycline https://doxycyline1st.com/
doxycycline 150 mg

# paxlovid chemical structure https://paxlovid.best/
paxlovid fda 2022/09/08 7:44 Paxlovid

paxlovid chemical structure https://paxlovid.best/
paxlovid fda

# absolutely free local dating site https://datingtopreview.com/
chat single 2022/10/17 20:40 Dating

absolutely free local dating site https://datingtopreview.com/
chat single

# prednisone brand name canada https://prednisone20mg.site/
prednisone prices 2022/11/15 18:00 Prednisone

prednisone brand name canada https://prednisone20mg.site/
prednisone prices

# purchase prednisone https://prednisonepills.site/
buy prednisone tablets online 2022/11/28 23:55 Prednisone

purchase prednisone https://prednisonepills.site/
buy prednisone tablets online

# online websites https://datingsiteonline.site/
best dating websites free 2022/12/05 23:51 Tading

online websites https://datingsiteonline.site/
best dating websites free

# pharcharmy online no script https://pillswithoutprescription.pro/# 2023/05/16 4:47 PillsPro

pharcharmy online no script https://pillswithoutprescription.pro/#

# order doxycycline https://doxycycline.forum/ doxycycline hydrochloride 100mg 2023/11/25 9:10 Doxycycline

order doxycycline https://doxycycline.forum/ doxycycline hydrochloride 100mg

# purchase prednisone no prescription https://prednisonepharm.store/ 10 mg prednisone 2024/01/20 15:54 Prednisone

purchase prednisone no prescription https://prednisonepharm.store/ 10 mg prednisone

# sweetie fox video https://sweetiefox.pro/ - sweetie fox video
2024/03/06 20:26 SwitieFox

sweetie fox video https://sweetiefox.pro/ - sweetie fox video

タイトル
名前
URL
コメント