|
|
|
 |
How to get the username of the current user
|
Article contributed by Astrid Zeelenberg
If you want a routine that works for all types of networks, you'll
have to use an API call to show the username of an user. The following code,
which needs to be in a Module, was
taken from Microsoft Knowledge Base article Q161394.
Option Explicit
'Declare for call to mpr.dll.
Declare Function WNetGetUser Lib
"mpr.dll" _
Alias "WNetGetUserA" (ByVal
lpName As String, _
ByVal lpUserName As
String, lpnLength As Long) As Long
Const NoError = 0 'The
Function call was successful
Function GetUserName() As String
'Buffer size for the return string.
Const lpnLength As
Long = 255
'Get return buffer space.
Dim status As Integer
'For getting user information.
Dim lpName, lpUserName As String
'Assign the buffer size constant to lpUserName.
lpUserName = Space$(lpnLength + 1)
'Get the log-on name of the person using product.
status = WNetGetUser(lpName, lpUserName, lpnLength)
'See whether error occurred.
If status = NoError Then
'This line removes the null character. Strings in C are null-
'terminated. Strings in Visual Basic are not null-terminated.
'The null character must be removed from the C strings to be used
'cleanly in Visual Basic.
lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
End If
'Display the name of the person logged on to the machine.
GetUserName = lpUserName
End Function
You could call it like this:
Sub Test()
MsgBox GetUserName
End Sub Note that if the user is not logged in,
the function will return nothing (an empty string).
|