C#应用程序可以直接执行(双击exe),也可以管理员身份执行(以管理员身份运行)。
即使在简单的用户帐户中,我也需要以管理员身份运行我的应用程序(以管理员身份运行)。
我想使用C#获取当前登录的用户名(但我得到了管理员的用户名)。
我尝试了很多选项,例如:Environment.Username,WindowsIdentity class等。它给了我admin的用户名(因为我已经以管理员身份运行了exe)而不是当前登录的用户名。
这是在.net 3.5上开发的winForm应用程序。应用程序可执行文件由管理员通过vb脚本登录执行。 vb脚本作为用户登录的soos执行。
在这个问题中有很多类似的查询,但所有答案都提供了管理员的用户名,而不是用户用户名中当前登录的用户名。因此我发布了这个问题。
请回答我的问题。提前感谢你。
答案 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);