如何获取当前Windows登录用户全名而不是域名[重复]

Posted

技术标签:

【中文标题】如何获取当前Windows登录用户全名而不是域名[重复]【英文标题】:how to get current windows login user full name instead of domain name [duplicate] 【发布时间】:2021-11-21 04:46:58 【问题描述】:

我想获取当前的 Windows 用户全名,而不是域名。 我正在使用下面的代码来获取用户名,但它的名字是带有域名的。

字符串用户名 = Request.ServerVariables["AUTH_USER"];

字符串 a=System.Web.HttpContext.Current.User.Identity.Name; 字符串用户名 = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

在上面的 3 个语句中,越来越像 APAC\san123。 但在这里我想要我的全名。 这里我在 c# 中使用 mvc。

【问题讨论】:

Environment.UserName 不符合您的要求吗? docs.microsoft.com/en-us/dotnet/api/… 全名是身份系统已知的数据项之一吗? @ConnorTJ Environment.UserName 将是运行应用程序的帐户的名称(例如 IIS AppPool),而不是客户端。 @MartinCostello 啊,请忽略我的困惑,我一定是看错了问题,在这种情况下,这不是同一个问题:***.com/a/263853/13108684 或这个问题:***.com/a/330408/13108684跨度> @ConnorTJ OP 已经在使用User.Identity.Name,这是问题的一部分。之前已经问过实际问题,是的,我刚刚作为副本关闭了 【参考方案1】:

您可以从活动目录中获取用户全名(使用 System.DirectoryServices.AccountManagement):

PrincipalContext context = new PrincipalContext(ContextType.Domain,Environment.UserDomainName);
string loginName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
UserPrincipal user = UserPrincipal.FindByIdentity(context, loginName);
string userName = user.Name; //=user.GivenName + " " + user.Surname;

【讨论】:

反对这个答案的人,请你解释一下它有什么问题?

以上是关于如何获取当前Windows登录用户全名而不是域名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 AD 获取当前登录的用户(而不是 NT AUTHORITY/NETWORK SERVICE)

VBA结合GetOject和GetUsername返回登录用户的实际名称而不是代码

一些获取当前登录Windows系统用户信息的命令

一些获取当前登录Windows系统用户信息的命令

如何从spring security获取当前登录的用户对象?

在 Windows - API - 如何获取/使用当前用户权限(或单点登录)