2016-02-10 4 views
0

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

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

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

+1

Может быть, вы знаете об этом, но не ясно, из вашего вопроса. Environ («имя пользователя») должно возвращать имя пользователя вошедшего в систему пользователя, а не того, кто является его машиной .... – OpiesDad

+0

Я не понимаю, что происходит. Если вы откроете окно командной строки на этом компьютере и спросите «echo% username%», значит, это дает вам другое имя, чем вы получаете из VBA 'environ (« username »)? – HansUp

+2

В окне Access Immediate какое имя вам показывает? 'Debug.Print CreateObject (« WScript.Network »). Имя пользователя' – HansUp

ответ

0

Это использует функции 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 

Retrieving Logged-in User Name

Смежные вопросы