Quantcast
Channel: わんくま同盟
Viewing all articles
Browse latest Browse all 994

グループのネストしているすべてのメンバーを表示する画面のWindowsアプリのコード(C#)

$
0
0

グループのネストしているすべてのメンバーを表示する画面の Windows アプリの C# のコードです。

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

public AllMemberList(DomainGroup group)

{

  InitializeComponent();

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

  this.MemberTreeView.ExpandAll();

}

 

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

//子ノードを追加

private void AddChildNode(DomainGroup group)

{

  var imageIndex = (int)group.Category;

  var node = newTreeNode(group.Name, imageIndex, imageIndex);

  this.MemberTreeView.Nodes.Add(node);

  var members = DirectoryAccess.GetMembers(group);   //グループのメンバーを取得

  foreach (var member in members)

  {

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

    member.Dispose();

  }

}

 

//子ノードを追加

private void AddChildNode(TreeNode node, DomainObject member)

{

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

  node.Nodes.Add(childNode);

  if (member.Category == CategoryType.Group)

  {

    var subMembers = DirectoryAccess.GetMembers((DomainGroup)member);   //グループのメンバーを取得

    foreach (var subMember in subMembers)

    {

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

      subMember.Dispose();

    }

  }

}

 

//指定したメンバーのノードを作成

privateTreeNode CreateNode(DomainObject member)

{

  string displayName;    //表示するテキスト

  var fontColor = Color.Black;

  switch (member.Category)

  {

    caseCategoryType.User:

      var user = (DomainUser)member;

      displayName = String.Format("{0}({1}{2}:{3}/{4})",

        user, user.LastName, user.FirstName, user.DisplayPath, user.Name);

      fontColor = Color.Brown;

      break;

    caseCategoryType.Group:

      var group = (DomainGroup)member;

      displayName = String.Format("{0}({1}:{2})", group, group.Scope, group.DisplayPath);

      fontColor = Color.Blue;

      break;

    caseCategoryType.Computer:

      var pc = (Computer)member;

      string sp = null;

      if (pc.OperatingSystemServicePack != null)

      {

        sp = pc.OperatingSystemServicePack.Replace("Service Pack ", " SP");

      }

      displayName = String.Format("{0}({1}{2}:{3})", pc, pc.OperatingSystem, sp, pc.Role);

      fontColor = Color.Green;

      break;

    default:   //CategoryType.ForeignSecurityPrincipal

      displayName = String.Format("{0}({1})", member, member.Name);

      break;

  }

  var imageIndex = (int)group.Category;

  return newTreeNode(displayName, imageIndex, imageIndex) { Name = member.Name, ForeColor = fontColor };

}

 

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

 

 

Active Directory 関連 Blog

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


Viewing all articles
Browse latest Browse all 994

Trending Articles