我正在尝试创建一个函数,在其中输入安全组名称并返回安全权限列表。
如何使用 C# 从 Active Directory获取安全组(例如read
、等)的安全权限列表(例如write
、等) ?full control
Domain Controllers
Domain Guests
我正在尝试创建一个函数,在其中输入安全组名称并返回安全权限列表。
如何使用 C# 从 Active Directory获取安全组(例如read
、等)的安全权限列表(例如write
、等) ?full control
Domain Controllers
Domain Guests
您需要检查要与 Active Directory 服务器通信的 LDAP 连接的路径。
例如:
DirectoryEntry rootDSE = null;
rootDSE = new DirectoryEntry("LDAP://OU=" + department + ",OU=Users,OU=" + ou + ",dc=corp,dc=local", username, password);
现在在这种情况下,我只需要Department → Users → 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();
我希望这就是你要找的!