如何在C#中获取当前登录的用户名?

时间:2012-06-12 17:56:46

标签: c#

  

可能重复:
  Get the logged on user name in C#

C#应用程序可以直接执行(双击exe),也可以管理员身份执行(以管理员身份运行)。

即使在简单的用户帐户中,我也需要以管理员身份运行我的应用程序(以管理员身份运行)。

我想使用C#获取当前登录的用户名(但我得到了管理员的用户名)。

我尝试了很多选项,例如:Environment.Username,WindowsIdentity class等。它给了我admin的用户名(因为我已经以管理员身份运行了exe)而不是当前登录的用户名。

这是在.net 3.5上开发的winForm应用程序。应用程序可执行文件由管理员通过vb脚本登录执行。 vb脚本作为用户登录的soos执行。

在这个问题中有很多类似的查询,但所有答案都提供了管理员的用户名,而不是用户用户名中当前登录的用户名。因此我发布了这个问题。

请回答我的问题。提前感谢你。

4 个答案:

答案 0 :(得分:3)

这里有几个答案:Get the logged on user name in C#

我首先尝试使用Win32 api。

答案 1 :(得分:1)

您可以尝试查询会话列表。

Retrieving Logon Session Information

您可以通过查找非管理会话的活动会话来确定当前登录的实际用户。

http://pinvoke.net/包含有关如何从C#调用本机方法的信息。

答案 2 :(得分:-1)

您可以使用System.Security.Principal.WindowsIdentity.GetCurrent().Name;并将其分配给string

例如:

string username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

答案 3 :(得分:-1)

这应该做的工作 -

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

Console.WriteLine(windowsPrincipal.Identity.Name);