Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 环境(“用户名”)与advapi32.dll_Ms Access_Vba_Ms Access 2003 - Fatal编程技术网

Ms access 环境(“用户名”)与advapi32.dll

Ms access 环境(“用户名”)与advapi32.dll,ms-access,vba,ms-access-2003,Ms 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)) GetUserNam

我知道在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)
以上哪种方法最安全?为什么


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

任何人都可以设置和取消设置环境变量、丢失或诸如此类,如果有人认为环境变量是错误源,这些情况往往很难重现


我肯定会选择advapi。

正如Simon所说,环境变量是可以操纵的,但是有些人也喜欢避免api调用,如果是这种情况,那么这是一个简单的选择:

Public Function GetUser() As String

    Dim WNet As Object

    Set WNet = CreateObject("WScript.Network")

    GetUser = WNet.UserName

    Set WNet = Nothing

End Function

+1除非我跳过
Set Nothing
语句,因为当WNet超出范围时,它将被销毁。