代码记录
在项目中遇到一个关于活动目录的一个问题先把代码粘贴如下,便于以后学习之用。
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;
}
}
}
}