2017-10-12 56 views
0

這一小段代碼獲取登錄的用戶的顯示名稱的系統當前獲取賬戶管理 - 顯示名稱 - Vb.net

Imports System.DirectoryServices.AccountManagement 

Dim userFullName As String = UserPrincipal.Current.DisplayName 
Label1.Text = "Hi " & userFullName & ", Welcome !!" 

上面的代碼工作正常,當我連接局域網內電腦。但當局域網被刪除和WIFI連接它不起作用..有人可以指導解決這個問題?

+0

這隻只要目錄服務器可以聯繫工作。我猜想通過WIFI目錄服務器無法訪問。 – MatSnow

+0

任何解決方法,我可以不連接到局域網的顯示名稱? –

回答

0

只有在可以聯繫目錄服務器的情況下,此方法纔有效。
否則你會得到一個PrincipalServerDownException

作爲解決方法,您可以在服務器可達時緩存displayname。

您可以將其緩存在My.Settings的內部。
創建用戶作用域設置命名爲cachedDisplayname,並使用下面的方法:

Function GetUserDisplayName() As String 
    Dim userFullName As String 

    Try 
     'Reading the displayname from the directory 
     userFullName = UserPrincipal.Current.DisplayName 
     'Saving the displayname in My.Settings 
     My.Settings.cachedDisplayname = userFullName 
     My.Settings.Save() 
    Catch ex As PrincipalServerDownException 
     If String.IsNullOrWhiteSpace(My.Settings.cachedDisplayname) Then 
      'displayname has not been cached yet, use Username as compromise solution 
      userFullName = Environment.UserName 
     Else 
      'read the cached displayname from My.Settings 
      userFullName = My.Settings.cachedDisplayname 
     End If 
    End Try 

    Return userFullName 
End Function 

設置標籤文本:

Label1.Text = String.Format("{0}, Welcome !!", GetUserDisplayName()) 
相關問題