winforms 获取Windows用户显示名称

6vl6ewon  于 2022-11-16  发布在  Windows
关注(0)|答案(3)|浏览(141)

如何获得登录用户的 * 显示名称 *?不是 * 用户名 *,而是 * 显示名称 *,如下面的屏幕截图所示-与任何Windows Vista/7计算机的开始菜单上显示的一样。

我尝试了一堆来自其他问题的不同建议,但它们都显示 username,而不是 display name。您可以在上面的屏幕截图中看到这些尝试的结果。

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
jecbmhm3

jecbmhm31#

您应该使用UserPrincipal.DisplayName

System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName

为此,您需要从项目中添加对System.DirectoryServices.AccountManagement.dll的引用。
注意:当计算机从网络中拔出或无法访问域服务器时不起作用。

k4ymrczo

k4ymrczo2#

试试这个
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);
    }
}
h4cxqtbf

h4cxqtbf3#

它包含在System.DirectoryServices命名空间中,因此您需要将其添加到using部分中。
然后您可以使用System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName,它会传回Display Name。这通常会显示在[开始]功能表中。

相关问题