2011-10-17 79 views
0

當我使用System.Environment.UserName或httpcontext.current ....等所有返回「系統」作爲用戶,因爲我的網站託管在系統特權。 嘗試過WMI,但這是空的。獲取用戶使用asp.net web應用程序登錄到windows的名稱

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem"); 
ManagementObjectCollection collection = searcher.Get(); 
WinUser = (string)collection.Cast<ManagementBaseObject>().First()["UserName"]; 

我正在使用基本身份驗證和匿名身份驗證已關閉。 有什麼想法?

回答

1

在客戶端計算機上發現登錄用戶本身是不可能的,特別是如果客戶端計算機是iPad。

您可以使用HttpContext.Current.User獲取從基本身份驗證中收到的用戶名。

+0

這是企業內部網應用程序,可以從網絡訪問只。用戶使用他們的勝利登錄到網絡。憑據,然後瀏覽Intranet上的網站,這需要另一個單獨的win登錄HttpContext.Current.User記錄通過其登錄到Intranet應用程序的用戶名,而不是Windows的登錄名。 – user570715

+0

@ user570715:除非您使用Active Directory的Windows身份驗證,否則您的問題是完全不可能的。 – SLaks

+0

我們使用Windows身份驗證。這個網站託管在我們的網絡內部服務器上,例如服務器「a」。我登錄到我的網絡使用我的憑據說,用戶「abc」現在我在IE瀏覽器上鍵入服務器地址瀏覽這個網站,要求我再次輸入憑據,因爲我已經啓用了贏。 IIS上的基本身份驗證,所以我輸入共同贏得的憑據。網絡的a/c說用戶「測試者」。現在我想寫數據庫,「贏得用戶ABC已經訪問應用程序使用測試儀A/C」 – user570715

0

嘗試HttpContext.Current.Request.LogonUserIdentity

1

除非這是一個Intranet應用程序,您使用的是Windows身份驗證,也沒有辦法得到這個信息,而無需首先提示他們的身份憑證。

假設你正在使用Windows身份驗證和提示時,你的用戶輸入他們的網絡憑據,你應該能夠得到這樣的用戶名:

string userName = Page.User.Identity.Name; 
相關問題