如何获取当前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返回登录用户的实际名称而不是代码