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

本文关键字:登录 用户 获取 | 更新日期: 2023-09-27 18:36:53

可能的重复项:
在 C# 中获取登录的用户名

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

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

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

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

这是一个在.net 3.5上开发的winForm应用程序。应用程序可执行文件由 vb 脚本以管理员登录身份执行。VB 脚本在用户登录时以 SOO 的形式执行。

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

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

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

这里有几个答案: 在 C# 中获取登录的用户名

我会先尝试 Win32 api。

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

检索登录会话信息

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

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

这应该可以完成工作 -

AppDomain appDomain = Thread.GetDomain();
appDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal windowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
Console.WriteLine(windowsPrincipal.Identity.Name); 

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

例如:

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