Get Username for a process

 

Public Shared Sub Main()
    Dim selectQuery As SelectQuery = New SelectQuery("Win32_Process")
    Dim searcher As ManagementObjectSearcher = New
    ManagementObjectSearcher(selectQuery)

    For Each proc As ManagementObject In searcher.Get
        Console.WriteLine(proc("Name").ToString)
        Dim s(1) As String
        proc.InvokeMethod("GetOwner"CType(sObject()))
        Console.WriteLine(("User: " & (s(1) + ("\\" + s(0)))))
    Next
    Console.ReadLine()
End Sub
REM This could be implemented as a function, like:

Public Function GetUserName(ByVal ProcessName As String)
    Dim selectQuery As SelectQuery = New SelectQuery("Win32_Process")
    Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(selectQuery)
    Dim y As System.Management.ManagementObjectCollection
    y = searcher.Get

    For Each proc As ManagementObject In y
        Dim s(1) As String
        proc.InvokeMethod("GetOwner"CType(sObject()))
        Dim n As String = proc("Name").ToString()

       If n = ProcessName & ".exe" Then
            Return ("User: " & s(1) & "\\" & s(0))
        End If
    Next
End Function


.