2012-01-24 61 views
3

我知道在Access應用程序中至少有兩種檢索用戶名的方法。environ(「username」)與advapi32.dll

可以使用ENVIRON功能:

environ("username") 

而且你可以在上述方法是最安全的使用ADVAPI32.DLL

Public Declare Function GetUserName& Lib "advapi32.dll" Alias _ 
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) 

s = String(l, Chr(32)) 
GetUserName s, l 
username = Left$(s, l - 1) 

哪一個使用GetUsername?爲什麼?

也許一些背景信息,應用程序在本地計算機和遠程桌面上都使用。

回答

5

正如西蒙說,ENVIRON變量是開放的操縱,但是有些人也希望避免的API調用,如果是這樣的話,那麼這是一個簡單的遵循替代:

Public Function GetUser() As String 

    Dim WNet As Object 

    Set WNet = CreateObject("WScript.Network") 

    GetUser = WNet.UserName 

    Set WNet = Nothing 

End Function 
+1

+1除我會跳過Set Nothing語句,因爲WNet在超出範圍時將被銷燬。 – JimmyPena

+0

@JP阿酷,我沒有意識到:) –

2

環境變量可以由任何人設置和取消設置,失蹤和什麼都不會,如果有人甚至認爲它是錯誤的來源,這些情況往往難以重現。

我一定會用advapi去。