Use WMI to get current Windows username in VBA
15,349
There is no TOP 1 clause in WQL. Leave it out and your query should work:
"SELECT * FROM Win32_Process WHERE Name = 'EXCEL.EXE'"
Author by
BuddyJoe
I like to code C# and work with the web. Still learning.
Updated on June 04, 2022Comments
-
BuddyJoe almost 2 years
I was wondering if there was a simple way to use WMI to get you the current windows user name with domain. The Windows API call just gets you the short username, so you end up doing another call for the domain name. I have some code, but I get an automation error. Any ideas? I think I'm on the right path, but I am a little new to WMI.
Function GetFullName() As String Dim computer As String computer = "." Dim objWMIService, colProcessList As Object Set objWMIService = GetObject("winmgmts:\\" & computer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("SELECT TOP 1 * FROM Win32_Process WHERE Name = 'EXCEL.EXE'") Dim uname, udomain As String Dim objProcess As Object For Each objProcess In colProcessList objProcess.GetOwner uname, udomain Next GetFullName = UCase(udomain) & "\" & UCase(uname) End Function
UPDATE: see comments on accepted answer
-
BuddyJoe over 15 yearsWhat if someone else is logged into the box on another account? Does this strategy fall apart? Could it pick up the Excel that the other user might be running and return the incorrect info? btw, removing the TOP 1 worked.
-
Fionnuala over 15 yearsNote that Environ is an "unsafe expression" in sandbox mode: office.microsoft.com/en-us/access/…