environ(“username”)与advapi32.dll

时间:2012-01-24 13:25:03

标签: vba access-vba ms-access-2003

我知道在Access应用程序中至少有两种方法可以检索用户名。

您可以使用环境功能:

environ("username")

您可以在advapi32.dll中使用GetUsername

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)

上述哪种方法最安全?为什么?

也许是一些背景信息,应用程序在本地计算机和远程桌面上都使用。

2 个答案:

答案 0 :(得分:6)

正如西蒙所说,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 :(得分:2)

任何人都可以设置和取消环境变量,丢失等等,如果有人甚至认为它是错误的来源,这些情况往往难以重现。

我肯定会选择advapi。