2012-05-25 83 views
2

我有以下C#代碼連接到我的域服務器並對其執行一些操作。一切工作正常在我的電腦上,我可以運行我所有的命令就好。PrincipalContext如何登錄域服務器

我的問題是:什麼憑證用於連接到服務器?我假定它使用當前用戶憑據。所以我真正的問題是這是否會對普通用戶起作用。我是管理員,在我的機器上工作正常。

但是我想知道如果同樣適用於非管理員?

PrincipalContext AD = new PrincipalContext(ContextType.Domain, "172.18.4.4"); 

UserPrincipal u = new UserPrincipal(AD); 
u.SamAccountName = Environment.UserName; 

PrincipalSearcher search = new PrincipalSearcher(u); 

UserPrincipal result = (UserPrincipal)search.FindOne(); 
+1

它使用當前用戶 - 但你也可以使用[替代構造函數PrincipalContext(http://msdn.microsoft.com/en-us/library/bb341016.aspx),將採用**特定**用戶的用戶名/密碼來查詢Active Directory –

回答

4

如果該代碼在Windows應用程序中運行,則使用的憑據是當前Windows用戶的憑據,並且它應該在域中正常工作。如果代碼在ASP.NET網站中運行,則憑據是網站運行的應用程序池的憑據。在最後一種情況下,您可能需要使用應用程序池的身份:LocalSystem,NetworkService ...

在以前的任何情況下,您都可以模擬用戶在以下位置運行此代碼:(查看答案)

How to use LogonUser properly to impersonate domain user from workgroup client