2016-11-29 62 views
0

因此,我可以使用下面的方法獲取 顯示名稱,但我無法在AD中找到該結果的物理傳輸名稱。值得注意的是,這種方法返回所有匹配,而不僅僅是用戶,所以這可能是問題的一部分,但我不知道如何將搜索改進爲只有用戶。使用HostingEnvironment.Impersonate獲取位置表單AD(

try 
     { 

      using (HostingEnvironment.Impersonate()) 
      { 
       using (var context = new PrincipalContext(ContextType.Domain, "********")) 
       { 
        UserPrincipal qbeUser = new UserPrincipal(context); 
        qbeUser.GivenName = search.letters; 
        using (var searcher = new PrincipalSearcher(qbeUser)) 
        { 
         foreach (var result in searcher.FindAll()) 
         { 
          list.Add(result.Name); 

         } 
        } 
       } 
      } 
     } 
     catch(Exception e) 
     { 
      return e.ToString(); 
     } 
+0

那麼你的問題不是很清楚。但假設你想要一個「精確搜索」,你應該看到羅伯特哈維的答案[這裏](http://stackoverflow.com/a/2128747/5588347)。 –

+0

@AshishSrivastava我試圖讓physicaldeliveryofficename字段形成結果對象。 – ZergRush

+0

你嘗試過'result.PhysicalDeliveryOfficeName'嗎? –

回答

1

基於Per Noalt's answer的編碼。你需要得到的基本類型,像這樣:

var directoryEntry = result.GetUnderlyingObject() as DirectoryEntry; directoryEntry.Properties["PhysicalDeliveryOfficeName"].Value

警告:上面的代碼不會驗證演員,也不是說財產存在的對象,並不做任何空檢查。