2

セキュリティグループ名を入力し、セキュリティ権限のリストを返す関数を作成しようとしています。

C#を使用してActive Directoryから、などのセキュリティグループの、などreadのセキュリティ権限のリストを取得するにはどうすればよいですか?writefull controlDomain ControllersDomain Guests

4

1 に答える 1

2

Active Directory サーバーと通信するために確立している LDAP 接続のパスを確認する必要があります。

例えば:

 DirectoryEntry rootDSE = null;
  rootDSE = new DirectoryEntry("LDAP://OU=" + department + ",OU=Users,OU=" + ou + ",dc=corp,dc=local", username, password);

その場合、部門→ユーザー→OU→DCに存在するグループのみが必要です

あなたの場合と同じです。セキュリティ グループが存在する OU を定義できます。

その後、次のようなグループを取得できます。

DirectorySearcher ouSearch = new DirectorySearcher(rootDSE);
ouSearch.PageSize = 1001;
ouSearch.Filter = "(objectClass=group)";
ouSearch.SearchScope = SearchScope.Subtree;
ouSearch.PropertiesToLoad.Add("name");
SearchResultCollection allOUS = ouSearch.FindAll();
foreach (SearchResult oneResult in allOUS)
{
     dt.Rows.Add(oneResult.Properties["name"][0].ToString());
}
rootDSE.Dispose();

パーミッションの場合

アクセス許可は、ファイルやディレクトリなどの個々のファイル システム項目、またはその他のオブジェクト (レジストリ キーなど) に保存されます。AD グループまたはユーザー アカウントを持っている場合、その SID (セキュリティ識別子) プロパティを読み取ることができます。その SID は Windows 全体の ACL (アクセス制御リスト) に表示されますが、ユーザーまたはグループからすべてを取得するメカニズムはありません。マシン/サーバーのどこにでもある可能性がある権限。

ファイルとディレクトリのパーミッションは、たとえば、FileInfo および DirectoryInfo クラスの .GetAccessControl() メソッドを使用して取得できます。

FileInfo info = new FileInfo(@"D:\test.txt");
FileSecurity fs = info.GetAccessControl();

DirectoryInfo dir = new DirectoryInfo(@"D:\test\");
DirectorySecurity ds = dir.GetAccessControl();

これがあなたが探しているものであることを願っています!

于 2012-09-17T13:03:00.657 に答える