获取 Windows 用户显示名称
Posted
技术标签:
【中文标题】获取 Windows 用户显示名称【英文标题】:Get Windows User Display Name 【发布时间】:2014-04-06 22:06:29 【问题描述】:如何获取登录用户的显示名称?不是用户名,而是显示名,如下面的屏幕截图所示 - 在任何 Windows Vista/7 计算机的开始菜单上都可以看到。
我从其他问题中尝试了一堆不同的建议,但它们都显示用户名,而不是显示名称。您可以在上面的屏幕截图中看到这些尝试的结果。
Imports System.Security.Principal
Imports System.Threading
Imports System.IO
Imports System
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox("1: " & System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString & vbCrLf & _
"2: " & Environment.UserDomainName & vbCrLf & _
"3: " & WindowsIdentity.GetCurrent().Name & vbCrLf & _
"4: " & Thread.CurrentPrincipal.Identity.Name & vbCrLf & _
"5: " & Environment.UserName & vbCrLf & _
"6: " & My.User.Name & vbCrLf &
"7: " & My.Computer.Name)
End Sub
End Class
【问题讨论】:
Environment.UserName 在这里工作正常。 @Codemunkeee 为什么那里的答案“不是你想要的”?它会产生不正确的输出吗? 当然你必须隐藏对话框下唯一重要的代码。 如果您的应用程序在另一个用户下运行,您将获得另一个用户名。 How do I get the AD Display Name of the currently logged in user 的可能重复项 【参考方案1】:你应该使用UserPrincipal.DisplayName
:
System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName
为此,您需要在项目中添加对System.DirectoryServices.AccountManagement.dll
的引用。
【讨论】:
我使用了这种方法,但在现实世界中,我看到 UserPrincipal.Current 的 getter 抛出 PrincipalServerDownException。我相信这种情况是当前用户使用域帐户登录,但无法联系目录服务器,例如笔记本电脑已从网络中拔出。谨慎使用此方法,似乎不靠谱! Roger Sanders 是对的,谨慎使用这个变量。在我的情况下,网络上有很长的延迟,所以这个方法会挂起一段时间。Unable to cast object of type 'System.DirectoryServices.AccountManagement.GroupPrincipal' to type 'System.DirectoryServices.AccountManagement.UserPrincipal'.
【参考方案2】:
试试这个
http://msdn.microsoft.com/en-us/library/sfs49sw0(v=vs.110).aspx
using System.IO;
using System;
using System.Security.Principal;
class Program
static void Main()
Console.WriteLine(WindowsIdentity.GetCurrent().Name);
【讨论】:
@Codemunkeee 在描述问题时,说“它不工作”是没有用的。为了获得帮助,您必须告诉我们出了什么问题。你看到一个例外吗?如果是这样,有什么例外?结果出乎意料吗?怎么样? 你可以参考我上面的问题。如您所见,它返回不同的输出,我将再次编辑代码以列出我所做的所有事情.. @Codemunkeee 你能试试上面的代码并粘贴你得到的控制台输出吗 还是一样的兄弟 :( 好的.. 等等.. 我还在编辑代码和所有我用过的东西【参考方案3】:这包含在 System.DirectoryServices
命名空间中,因此您需要将其添加到 using
部分。
然后您可以使用返回Display Name
的System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName
。这通常显示在“开始”菜单中。
【讨论】:
以上是关于获取 Windows 用户显示名称的主要内容,如果未能解决你的问题,请参考以下文章
在Windows 10 C#UWP通用Windows应用程序中获取UserName