2011-10-17 18 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

これは、イントラネットアプリケーション、ネットワークからアクセスすることができているだけ。ユーザーは勝利を使用してネットワークにログインします。別の独立した勝利ログインを必要とするイントラネット上のサイトを参照します。HttpContext.Current.Userは、ユーザーがイントラネットアプリケーションにログインした際のログ名です。 – user570715

+0

@ user570715:Active DirectoryでWindows認証を使用しない限り、あなたの質問は完全に不可能です。 – SLaks

+0

私たちはWindows認証を使用します。このサイトは、私たちのネットワーク内のサーバー "a"と呼ばれる内部サーバーでホストされています。私は自分のネットワークにログオンして、自分の資格情報を使って "abc"と答えています。 IIS上での基本認証なので、私は一般的な勝利の資格情報を入力します。ネットワークのa/cはユーザー "テスター"と言います。今私はdbに "abcユーザがテスターa/cを使ってアプリケーションにアクセスしました"と書いて欲しいです。 – user570715

0

が、これはイントラネットアプリケーションであり、あなたがWindows認証を使用している場合を除き、最初の資格情報を求めるプロンプトが表示されず、この情報を取得する方法はありませんHttpContext.Current.Request.LogonUserIdentity

1

を試してみてください。

Windows認証を使用していて、ユーザーが要求されたら、自分のネットワーク資格情報を入力していると仮定すると、あなたはこのようなユーザー名を得ることができる必要があります:

string userName = Page.User.Identity.Name; 
関連する問題