谢谢您提出这个有趣的问题。
接下来,只是更正,您说:
我研究了以下LDAP代码以一次获取所有memberOf条目:
(memberOf:1.2.840.113556.1.4.1941:={0})你没有使它工作。我记得当我了解它的存在时使它起作用,但是它在LDIFDE.EXE筛选器中。因此,我将其应用于C#中的ADSI,并且仍在工作。我从Microsoft那里获得的示例中括号过多,但可以正常工作(来自AD
Search过滤器语法)。
根据您关于我们不知道用户是否明确属于该组这一事实的说法,我再添加一个请求。我知道这不是很好,但这是我能做的最好的。
static void Main(string[] args){ DirectoryEntry debase = new DirectoryEntry("LDAP://WM2008R2ENT:389/dc=dom,dc=fr"); DirectorySearcher dsLookFor = new DirectorySearcher(debase); dsLookFor.Filter = "(member:1.2.840.113556.1.4.1941:=CN=user1 Users,OU=MonOu,DC=dom,DC=fr)"; dsLookFor.SearchScope = SearchScope.Subtree; dsLookFor.PropertiesToLoad.Add("cn"); SearchResultCollection srcGroups = dsLookFor.FindAll(); foreach (SearchResult srcGroup in srcGroups) { Console.WriteLine("{0}", srcGroup.Path); foreach (string property in srcGroup.Properties.PropertyNames) { Console.WriteLine("t{0} : {1} ", property, srcGroup.Properties[property][0]); } DirectoryEntry aGroup = new DirectoryEntry(srcGroup.Path); DirectorySearcher dsLookForAMermber = new DirectorySearcher(aGroup); dsLookForAMermber.Filter = "(member=CN=user1 Users,OU=MonOu,DC=dom,DC=fr)"; dsLookForAMermber.SearchScope = SearchScope.base; dsLookForAMermber.PropertiesToLoad.Add("cn"); SearchResultCollection memberInGroup = dsLookForAMermber.FindAll(); Console.WriteLine("Find the user {0}", memberInGroup.Count); } Console.ReadLine();}在我的测试树中,这给出了:
LDAP://WM2008R2ENT:389/CN=MonGrpSec,OU=MonOu,DC=dom,DC=fradspath : LDAP://WM2008R2ENT:389/CN=MonGrpSec,OU=MonOu,DC=dom,DC=frcn : MonGrpSecFind the user 1LDAP://WM2008R2ENT:389/CN=MonGrpDis,OU=ForUser1,DC=dom,DC=fradspath : LDAP://WM2008R2ENT:389/CN=MonGrpDis,OU=ForUser1,DC=dom,DC=frcn : MonGrpDisFind the user 1LDAP://WM2008R2ENT:389/CN=MonGrpPlusSec,OU=ForUser1,DC=dom,DC=fradspath : LDAP://WM2008R2ENT:389/CN=MonGrpPlusSec,OU=ForUser1,DC=dom,DC=frcn : MonGrpPlusSecFind the user 0LDAP://WM2008R2ENT:389/CN=MonGrpPlusSecUniv,OU=ForUser1,DC=dom,DC=fradspath : LDAP://WM2008R2ENT:389/CN=MonGrpPlusSecUniv,OU=ForUser1,DC=dom,DC=frcn : MonGrpPlusSecUnivFind the user 0
(已编辑)“ 1.2.840.113556.1.4.1941”在W2K3 SP1中不起作用,开始在SP2中起作用。我想与W2K3
R2相同。它应该可以在W2K8上运行。我在这里用W2K8R2进行测试。我很快就能在W2K8上对其进行测试。



