Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Vba Environ(“用户名”)返回错误的用户名_Vba_Ms Access_Environ - Fatal编程技术网

Vba Environ(“用户名”)返回错误的用户名

Vba Environ(“用户名”)返回错误的用户名,vba,ms-access,environ,Vba,Ms Access,Environ,当我在交替会话中执行Access应用程序时,函数Environ(“用户名”)将返回我所在部门的人员的用户名,而不是我当前使用其机器执行代码的实际用户 在整个程序中不会发生其他类型的用户名操作 知道这是如何实现的吗?这使用Windows API函数返回当前登录的用户的名称 '// API Declarations Private Declare Function GetUserName Lib "advapi32.dll" _ Alias "GetUserNameA" (ByVal lpBuffe

当我在交替会话中执行Access应用程序时,函数
Environ(“用户名”)
将返回我所在部门的人员的用户名,而不是我当前使用其机器执行代码的实际用户

在整个程序中不会发生其他类型的用户名操作


知道这是如何实现的吗?

这使用Windows API函数返回当前登录的用户的名称

'// API Declarations
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _
  As Long


Function UserName() As String
    '// Returns the name of the logged-in user
    Dim Buffer As String * 100
    Dim BuffLen As Long
    BuffLen = 100
    GetUserName Buffer, BuffLen
    UserName = Left(Buffer, BuffLen - 1)
    'MsgBox UserName
End Function

这使用Windows API函数返回当前登录用户的姓名

'// API Declarations
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _
  As Long


Function UserName() As String
    '// Returns the name of the logged-in user
    Dim Buffer As String * 100
    Dim BuffLen As Long
    BuffLen = 100
    GetUserName Buffer, BuffLen
    UserName = Left(Buffer, BuffLen - 1)
    'MsgBox UserName
End Function

也许您知道这一点,但您的问题并不清楚。Environ(“username”)应该返回登录用户的用户名,而不是机器上的人……我不明白发生了什么。如果您在该计算机上打开命令提示窗口并要求输入
echo%username%
,是否会给您一个不同于您从VBA
环境(“username”)
中获得的名称?在Access Immediate窗口中,这会给您显示什么名称
Debug.Print CreateObject(“WScript.Network”).Username
也许您知道这一点,但您的问题并不清楚。Environ(“username”)应该返回登录用户的用户名,而不是机器上的人……我不明白发生了什么。如果您在该计算机上打开命令提示窗口并要求输入
echo%username%
,是否会给您一个不同于您从VBA
环境(“username”)
中获得的名称?在Access Immediate窗口中,这会给您显示什么名称<代码>Debug.Print CreateObject(“WScript.Network”).Username