2

重複の可能性:
C#でログオンしたユーザー名を取得します

C#アプリケーションは、直接実行する(exeをダブルクリックする)か、管理者として実行する(管理者として実行する)ことができます。

単純なユーザーアカウントでも、アプリケーションを管理者として実行する(管理者として実行する)必要があります。

C#を使用して現在ログインしているユーザー名を取得したい(ただし、adminのユーザー名を取得します)。

Environment.Username、WindowsIdentityクラスなど、多くのオプションを試しました。現在ログインしているユーザー名ではなく、adminのユーザー名(exeをadminとして実行しているため)が表示されます。

これは、.net3.5で開発されたwinFormアプリケーションです。Application Executableは、vbスクリプトによる管理者ログインで実行されます。vbスクリプトは、ユーザーがログインするとsoosとして実行されます。

この4mには多くの同様のクエリがありますが、すべての回答は、現在ログインしているユーザーのユーザー名ではなく、管理者のユーザー名を提供します。したがって、私はこの質問を投稿しました。

私の質問に答えてください。よろしくお願いします。

4

4 に答える 4

3

ここにはいくつかの答えがあります: C# でログオンしているユーザー名を取得する

最初にWin32 APIを試してみます。

于 2012-06-12T18:08:33.227 に答える
1

セッションリストのクエリを試すことができます。

ログオン セッション情報の取得

管理セッションではないアクティブなセッションを見つけることで、現在ログインしている実際のユーザーを把握できます。

http://pinvoke.net/には、C# からネイティブ メソッドを呼び出す方法に関する情報があります。

于 2012-06-12T18:01:10.933 に答える
-1

これでうまくいくはずです-

AppDomain appDomain = Thread.GetDomain();
appDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal windowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;

Console.WriteLine(windowsPrincipal.Identity.Name); 
于 2012-06-12T18:15:02.330 に答える
-1

System.Security.Principal.WindowsIdentity.GetCurrent().Name;それを使用してに割り当てることができますstring

例えば:

string username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
于 2012-06-12T18:11:36.420 に答える