Code Samples for Businesses, Schools & Developers

Updated 12 Sept 2018            


There are 3 common methods of getting the current user name in Access

1.   Environ("UserName")

2.   CreateObject("WScript.Network").UserName

3.   fOSUserName function by Dev Ashish
      As this includes API declarations, it needs to be adapted for 32-bit/64-bit systems using conditional compilation

      CODE:

#If VBA7 Then
         Public Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
                  "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long      
#Else
         Public Declare Function apiGetUserName Lib "advapi32.dll" Alias _
                  "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long  
#End If
'================================================

Public Function fOSUserName() As String
' Returns the network login name

    Dim lngLen As Long, lngX As Long
    Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngX = apiGetUserName(strUserName, lngLen)

    If (lngX > 0) Then
         fOSUserName = Left$(strUserName, lngLen - 1)
    Else
         fOSUserName = vbNullString
    End If

End Function


Of these 3 methods, the simplest uses the Environ function.

However it is possible to 'spoof' some Environ variables including the user name so this method can not be guaranteed to be accurate
This is the case for both ACCDB & ACCDE files

UserNameSpoof
NOTE:
I am deliberately not going to explain here how this can be done.

As far as I am aware, the other two methods cannot be 'spoofed'.
Therefore, where it is important that the information isn't falsified, use one of methods 2 or 3.

As the WScript method does not need adapting for 32-bit/64-bit systems, that is the approach I would normally recommend.



Download

Click to download an example database:
          GetUserName                Approx 0.4 MB (zipped)


NOTE:
This is a companion to my GetComputerName article.



Feedback

Please use the E-Mail button in the contact form below to let me know whether you found this article useful or if you have any questions.

Please also consider making a donation towards the costs of maintaining this website. Thank you



Colin Riddington             Mendip Data Systems            Last Updated 12 Sept 2018



Return to Code Samples Page




Return to Top