2010-11-23 8 views
17

としてコード内から判断してください。好奇心以外のこの質問をするには、実際に私のプロセスがどのユーザで実行されているかをコード内から判断する方法はありますか?コードを使用して説明するために:私のプロセスが実行中のユーザを

MSDNから
static void Main(string[] args) 
{ 
    string userID; 
    //what goes here to fill in this userID variable? 
    Console.out.WriteLine(string.Format("This process is running as {0}.", userID)); 
} 

答えて

35
string userID = WindowsIdentity.GetCurrent().Name 

WindowsIdentity.GetCurrent()WindowsIdentity.Name

+1

これは単に自分がログインしている人物を取得するだけではなく、プロセスがこれらのアカウントの1つで実行されていた場合、ローカルシステムまたはネットワークサービスなどを返します。 – Zannjaminderson

+5

Environment.UserNameはこのためのより一般的なショートカットですと思います。 –

+2

@ Zann、それは正しいですが、ログインしているユーザーアカウントではなく、プロセスのIDを返しますが、同じでもなくてもかまいません。典型的なIISワーカープロセスなどで、LOCAL SYSTEMまたはNETWORK SERVICEを正しく返します。 @Hans:OPはプロセスのIDを要求しましたが、現在のユーザはコンソール/セッションにログインしていませんでした。(同じでも構いませんが) –

1

をあなたが実行しているアプリケーションの種類に応じて、さまざまな方法があります。

Here's an articleスレッドプリンシパルを使用してユーザーデータ/権限をチェックする場合。

This threadには、それほど精巧ではありませんが、他にも2つのアプローチがあります。

1

string UserID = Environment.UserName;

関連する問題