获取Windows用户显示名称

Cod*_*eee 36 .net c# vb.net winforms

如何获取登录用户的显示名称?不是用户名,而是显示名称,如下面的屏幕截图所示 - 以及任何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
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 61

你应该使用UserPrincipal.DisplayName:

System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName
Run Code Online (Sandbox Code Playgroud)

为此,您需要并System.DirectoryServices.AccountManagement.dll从项目中添加引用.

  • 我使用这种方法,但在现实世界中,我看到UserPrincipal.Current的getter抛出PrincipalServerDownException.我认为情况是当前用户使用域帐户登录,但无法联系目录服务器,例如从网络上拔下笔记本电脑时.谨慎使用这种方法,它似乎不可靠! (6认同)