.NET 3.5 - System.DirectoryServices.AccountManagement - 组上的 AdvancedSearchFilter?
Posted
技术标签:
【中文标题】.NET 3.5 - System.DirectoryServices.AccountManagement - 组上的 AdvancedSearchFilter?【英文标题】:.NET 3.5 - System.DirectoryServices.AccountManagement - AdvancedSearchFilter on group? 【发布时间】:2011-08-06 10:30:04 【问题描述】:我正在使用System.DirectoryServices.AccountManagement
API 从 AD 中提取组列表。这些组都以相同的前缀开头,因此使用前缀和通配符很容易找到它们。我还想做的是获取自上次检查以来已更改的组。我已经将GroupPrincipal
子类化为包含whenChanged
属性,并且在我拉出完整的组列表后,我目前正在使用它来过滤列表。我想知道的是,是否可以在GroupPrincipal
上执行AdvancedFilterSearch
?我意识到GroupPrincipal
没有AdvancedFilterSearch
属性。我想知道如果您在子类中添加一个 PrincipalSearcher
会使用它吗?如果是的话,举个例子就好了。
谢谢,
克里斯·麦金农
【问题讨论】:
您好,只是想知道您想通过使用 AdvancedFilterSearch 来实现什么?我在问,因为可能有一些其他策略可以通过不使用 AdvancedFilterSearch 来解决您的问题 【参考方案1】:仅获取自上次检查以来发生更改的组的简短答案是(很容易)不可能。
AD 中的每个对象都有一个与之关联的更新序列号属性。当一个组更改其 USN 时。但不总是。如果您向组添加/删除成员,则 USN 不会更改。只有当您更改组名或其他简单属性时,它才会更改。 最重要的是,USN 编号在单个域控制器上是唯一的。因此,您必须确保始终连接到同一台服务器。
您可以订阅对 AD 对象的更改并在更改时收到通知,但这无法扩展。
在我的项目中,我最终每次都查询所有组。这并不像听起来那么糟糕,因为 API 非常擅长对结果集进行分页,并且通过查看资源并不是很密集。
【讨论】:
以上是关于.NET 3.5 - System.DirectoryServices.AccountManagement - 组上的 AdvancedSearchFilter?的主要内容,如果未能解决你的问题,请参考以下文章
.Net Framework 3.5 和 .Net Framework 3.5 SP1 有相同的版本号吗?