2012-01-25 13 views
0

Windowsサービスから現在ログインしているユーザーアカウント名を取得するにはどうすればよいですか?アカウントはローカルではありません - ドメインアカウントです。 私が試したすべてのメソッドはうまくいかず、LocalServiceアカウントだけを返しました。Windowsサービスからのアカウント名の取得

+3

Windowsサービスは、ユーザーがログインしていなくても実行されます。ユーザーがログオンしていないとどうなるでしょうか?複数のユーザーがログインしている場合 – Oded

+0

サービスの設定時に "ログオン"タブに表示されるものは何ですか?特に何を試してみましたか? – CoreTech

+0

@Odedはい、Windowsサービスは、ログオンしているユーザーなしで実行されますが、Windowsサービスでは、実行されるアカウントが必要です。私は彼がWindowsサービスが実行されているアカウントを探していると思う。 –

答えて

-1

サービスはLocalServiceというユーザーのコンテキストで実行されています。対話型/ RDPセッションにログオンしているユーザーの名前を取得したい場合は、PInvokeを使用してターミナルサービスAPIを使用する必要があります。これはここの出発点です:WTSEnumerateSessions

+2

サービスは 'LocalService'として実行されるかもしれませんが、そうする必要はありません。 – Oded

+0

@Oded: "LocalServiceアカウントのみを返しました。"私は、サービス*がLocalServiceとして実行されていることを安全に想定できると思います – Novakov

0

名前空間にこのメソッドWindowsIdentity.GetCurrent(False).Nameを使用していました。私は、テキストファイルに次の文字列を書くために、私のサービスに行を追加してVS2010と.NET Framework 4

を実行している:

String.Format("Currently logged on account: {0}", System.Security.Principal.WindowsIdentity.GetCurrent(False).Name) 

これは、Windowsサービスがあったの下に対応するWindowsアカウントを返さランニング。

アカウントLocal Serviceの下で実行されている場合は実行している場合、それはdom\name.lastname私のドメインアカウントの下で、それはあなたがサービスはの「ログオン」タブで実行するアカウントを指定することができますDOM\Name.Lastname

を返さNT AUTHORITY\LOCAL SERVICE

を返さサービスプロパティダイアログ。

関連する問題