perhaps something like this may help.
WinXp / Xl2003
Option Explicit
'// WMI String Constants
Private Const strWmgt As String = "winmgmts:" &
"{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2"
Private Const strWmiQ As String = "Select * from Win32_Process"
Dim hWnd As Long
Dim MyList()
'// helper Subs
Sub OwnerOfProcesses()
Dim objWMIService As Object
Dim colProcessList As Object
Dim objProcess As Object
Dim strNameOfUser
Dim strUserDomain
Dim colProperties As String
Dim x As Double
'//
Set objWMIService = GetObject(strWmgt)
Set colProcessList = objWMIService.ExecQuery(strWmiQ)
x = colProcessList.Count
ReDim MyList(x - 1, 3)
x = 0
For Each objProcess In colProcessList
colProperties = objProcess.GetOwner(strNameOfUser, strUserDomain)
MyList(x, 0) = objProcess.Name
MyList(x, 1) = strUserDomain
MyList(x, 2) = strNameOfUser
MyList(x, 3) = objProcess.Handle
x = x + 1
Next
With Sheet1
.Range(.Range("A1

2"), .Range("A1

2").End(xlDown)).ClearContents
.[A1].Resize(x, 4) = MyList
.UsedRange.EntireColumn.AutoFit
End With
MsgBox "Processes: " & x
End Sub