2014-09-23 76 views
0

我想問一下,是否有一個LDAP C#函數,允許我在AD中進行搜索而無需調用綁定?C#LDAP搜索沒有綁定

我嘗試使用LDP.exe,Windows GUI LDAP工具來搜索AD,但它正確地返回信息,但是,由於我沒有訪問AD,我不知道需要綁定的證書AD。

我曾嘗試使用LDIDFE.exe,Windows命令行LDAP工具來搜索AD,它返回了混合不正確和正確的信息。有誰知道爲什麼?

我相信LDP.exe使用C++函數ldap_search_s來執行搜索。有什麼辦法可以在C#中做到這一點?

謝謝。

+1

如果複製您無權訪問LDAP,並且沒有連接憑據 - ** no **,那麼您**無法**訪問它。沒有「魔術」功能會給你那個訪問...... – 2014-09-23 07:18:00

回答

0

如果您的程序在加入到感興趣的域的計算機上運行,​​並且您只知道您的憑據而不知道任何提升的帳戶,那麼您至少可以枚舉各種對象,如用戶帳戶和安全組。

您可以使用AD powershell或使用.net的System.DirectoryServices NamespaceSystem.DirectoryServices.AccountManagement Namespace

System.DirectoryServices.AccountManagement Namespace命名空間是新的,更簡單的和首選方式,除非有一些東西你不能用它做什麼,那麼你可以使用System.DirectoryServices Namespace

下面的例子是從this MSDN article

PrincipalContext ctx = new PrincipalContext(ContextType.Machine); 

UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, 
              IdentityType.SamAccountName, 
              "Guest"); 

if(usr != null) 
{ 
    if (usr.Enabled == false) 
     usr.Enabled = true; 

    usr.Save(); 
    usr.Dispose(); 
} 
ctx.Dispose(); 
+0

我的電腦有權訪問ldap服務器。我可以在Windows中使用LDP.exe來搜索我需要的信息,但ldidfe.exe命令行功能不起作用。我認爲這可能是由於ldidfe應用程序在搜索之前進行了綁定,而ldp應用程序沒有進行綁定。因此,我試圖尋找一種方法來簡單地搜索ldp.exe應用程序使用C#執行的操作。有任何想法嗎?謝謝。 – jiaming 2014-09-24 03:16:26

+0

@jiaming上面的代碼_is_ C#。從www.visualstudio.com下載Visual Studio Express Edition(免費)並嘗試上面的鏈接和代碼。 – joym8 2014-09-24 13:31:01