2

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

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

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

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

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

这是一个在.net 3.5 上开发的winForm 应用程序。应用程序可执行文件通过 vb 脚本在管理员登录的情况下执行。vb 脚本在用户登录时以 soos 方式执行。

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

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

4

4 回答 4

3

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

我会先尝试 Win32 api。

于 2012-06-12T18:08:33.227 回答
1

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

检索登录会话信息

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

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

于 2012-06-12T18:01:10.933 回答
-1

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

例如:

string username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
于 2012-06-12T18:11:36.420 回答
-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 回答