2016-10-26 52 views
0

當檢索所有組/用戶時,從活動目錄中的DistinguishedName獲取規範化路徑的最佳方式是什麼?有沒有與下面的實現從活動目錄中的DistinguishedName獲取規範路徑的最佳方法c#

foreach (SearchResult entry in results) 
      { 

       var distinguishedName = entry.Properties["distinguishedName"][0].ToString(); 
       entry.RefreshCache(new string[] { "canonicalName" }); 
       var canonicalName = entry.Properties["canonicalName"][0].ToString(); 


      } 

回答

0

您的代碼將無法正常工作,如信息搜索結果中不包含RefreshCache方法的任何問題。將DN轉換爲CN的最佳方式是使用DsCrackNames函數。

您需要將DS_NAME_FORMAT.DS_FQDN_1779_NAME轉換爲DS_NAME_FORMAT.DS_CANONICAL_NAME。

執行此轉換不需要Active Directory連接。您需要使用DS_NAME_FLAGS.DS_NAME_FLAG_SYNTACTICAL_ONLY標誌,然後通過IntPtr.Zero作爲連接處理

注意,外部安全主體不能轉換使用此功能

但是,如果你已經DN查詢,可以查詢CN以及。在你的情況下,下面的代碼應該工作:

 foreach (SearchResult entry in results) 
     { 
      var distinguishedName = entry.Properties["distinguishedName"][0].ToString(); 
      var canonicalName = entry.Properties["canonicalName"][0].ToString(); 
     } 

如果條目不包含CN,您需要在執行AD查詢

之前將它添加到的DirectorySearcher的請求的屬性
相關問題