簡體   English   中英

使用DirectorySearcher的C#中的LDAP查詢不返回任何內容

[英]LDAP Query in c# using DirectorySearcher does not return anything

我使用與AD的根綁定的DirectorySearcher運行以下LDAP查詢:

(&(|(objectClass=container)(objectClass=organizationalUnit))(!(distinguishedName=OU=)(*&^%\\\#@$!\\\#$%^,OU=xyxy.yxyx,OU=yyyy,OU=tttt,DC=base,DC=local)))

但是,它不返回任何OU。 當我使用另一個如下所示的OU運行相同的查詢時,我得到了AD中的所有其他OU:

(&(|(objectClass=container)(objectClass=organizationalUnit))(!(distinguishedName=OU=SOMEOU,OU=xyxy.yxyx,OU=yyyy,OU=tttt,DC=base,DC=local)))

基本上,我試圖對所有不包括某些特定OU的OU運行查詢。 我想這與OU名稱中的特殊字符有關。

我假設OU的名稱是)(*&^%\\#@$!\\#$%^因為它出現在活動目錄用戶和計算機中。如果打開屬性編輯器,您將找到以下值distinguishedName屬性: OU=)(*&^%\\\\\\#@$!\\\\\\#$%^,OU=.... (請注意,此處的反斜杠數量增加了一倍,並添加了一個額外的反斜杠)。

基於此MSDN頁面 ,需要轉義()*\\ (及其他)。

  • *變成\\ 2a

  • (變成\\ 28

  • )變成\\ 29

  • \\變成\\ 5c

因此,您在LDAP過濾器中的OU名稱應變為OU=\\29\\28\\2a&^%\\5c\\5c\\5c#@$!\\5c\\5c\\5c#$%^,OU=....

請注意,您需要在此處轉義\\字符,或在C#中使用@創建這樣的逐字字符串:

string dn = @"OU=\29\28\2a&^%\5c\5c\5c#@$!\5c\5c\5c#$%^,OU=...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM