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'"
Share:
15,349
BuddyJoe
Author by

BuddyJoe

I like to code C# and work with the web. Still learning.

Updated on June 04, 2022

Comments

  • BuddyJoe
    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
    BuddyJoe over 15 years
    What 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
    Fionnuala over 15 years
    Note that Environ is an "unsafe expression" in sandbox mode: office.microsoft.com/en-us/access/…