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

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

$
0
0

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

//イベントハンドラ

protected void Page_Load(object sender, EventArgs e)

{

  if (String.IsNullOrEmpty(Request.QueryString["name"]))

  {

    return;

  }

  if (this.IsPostBack)

  {

    return;

  }

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

}

 

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

//子ノードを追加

private void AddChildNode()

{

  using (var group = DomainGroup.FindByName(Request.QueryString["name"]))   //グループを検索

  {

    var node = newTreeNode(group.Name);

    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.ChildNodes.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;    //表示するテキスト

  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);

      break;

    caseCategoryType.Group:

      var group = (DomainGroup)member;

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

      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);

      break;

    default:   //CategoryType.ForeignSecurityPrincipal

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

      break;

  }

  return newTreeNode(displayName, member.Name);

}

 

内容的には Windows アプリと同じです。説明は VB の方に書いてますのでそちらをご覧ください。

 

 

Active Directory 関連 Blog

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


Viewing all articles
Browse latest Browse all 994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>