你应该使用Environment.UserName(msdn):
获取当前登录到Windows操作系统的人员的用户名.
例:
Console.WriteLine("UserName: {0}", Environment.UserName);
Run Code Online (Sandbox Code Playgroud)
如果要获取当前正在运行该过程的用户,请使用:
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)
要么
string userName = System.Environment.UserName
Run Code Online (Sandbox Code Playgroud)
但是,您获得的用户Environment.UserName不能保证是运行当前进程的用户.
本评论中解释了两者之间的差异:
更喜欢的原因
WindowsIdentity.GetCurrent()是它返回运行应用程序的帐户.这不一定是当前登录到Windows的帐户(想想"RunAs"或模拟/委派).因此,如果您想了解登录用户,请使用环境(如果您信任它).如果您想知道应用程序运行的安全上下文,请使用WindowsIdentity.GetCurrent().