代码记录

在项目中遇到一个关于活动目录的一个问题先把代码粘贴如下,便于以后学习之用。
using System;
using System.DirectoryServices;

namespace  G217010.Utility
{
 /// <summary>
 /// CreatGroup の概要の説明です。
 /// 該当職員端末機が庁内ネットワークに接続する場合に対する操作を行います。
 /// </summary>
 public class CreatGroup
 {
  /// <summary>
  /// セキュリティグループ作り
  /// </summary>
  /// <param name="PCName"></param>
  /// <param name="GroupName"></param>
  /// <returns>存在と作りしました場合:true or 端末機が庁内ネットワークに接続していない場合false</returns>
  public bool CreatGrp(string PCName, string GroupName)
  {
   //
   // TODO: コンストラクタ ロジックをここに追加してください。
   //
   System.Diagnostics.Debug.WriteLine("START : CreatGroup - CreatGroup()");
      
   try
   {

    DirectoryEntry obDirEntry = null;
    DirectoryEntry adDirEntry = null;
    bool flag = false;
    adDirEntry = new DirectoryEntry("WinNT://PREF");
    //セキュリティグループ存在チェック
    foreach (DirectoryEntry i in adDirEntry.Children)
    {
     if (i.Name == "D" + GroupName)
     {
      flag = true;
      break;
     }

    }
    //存在しない場合
    if (!flag)
    {
     return false;
    }
    //Administratorsグループにセキュリティグループを登録する 
    obDirEntry = new DirectoryEntry("WinNT://" + PCName);
    DirectoryEntry AdGroup = obDirEntry.Children.Find("Administrators", "group");
    DirectoryEntry Group = adDirEntry.Children.Find("D" + GroupName, "group");

    //登録チェック。
    if ((bool)AdGroup.Invoke("IsMember", "WinNT://PREF/" + "D" + GroupName))
    {
     return true;
    }
    else
    {
     AdGroup.Invoke("Add", Group.Path.ToString());
     System.Diagnostics.Debug.WriteLine("END  : CreatGroup - CreatGroup()");
     return true;

    }
           
   }
   catch (Exception ex)
   {
          
    System.Diagnostics.Debug.WriteLine("END  : CreatGroup - CreatGroup()");
    throw ex;
    return false;
    
   }


  }
 }
}

原文地址:https://www.cnblogs.com/buaaliang/p/656781.html