Environ(имя пользователя) возвращает неправильные имена пользователей

Когда я запускаю свое приложение Access в чередующихся сеансах, функция Environ("username") возвращает имя пользователя из моего отдела, отличного от фактического пользователя, чью машину я сейчас использую для выполнения кода.

Никаких других манипуляций с именами пользователей в программе не происходит.

Любая идея, как это возможно?


person Eric Hondzinski    schedule 10.02.2016    source источник
comment
Возможно, вы знаете об этом, но из вашего вопроса это неясно. Environ(username) должен возвращать имя вошедшего в систему пользователя, а не человека, на котором он работает....   -  person OpiesDad    schedule 10.02.2016
comment
Я не понимаю, что происходит. Если вы откроете окно командной строки на этом компьютере и запросите echo %username%, даст ли это вам другое имя, чем вы получили от VBA environ("username")?   -  person HansUp    schedule 11.02.2016
comment
Какое имя отображается в окне Access Immediate? Debug.Print CreateObject("WScript.Network").Username   -  person HansUp    schedule 11.02.2016


Ответы (1)


При этом используются функции 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

Получение имени пользователя, вошедшего в систему

person 0m3r    schedule 11.02.2016