на всякий пожарный выложу решение.на форуме мсдн решили)
| Код |
Public Shared Function GetAllProcessOwners() As Dictionary(Of Integer, String) Dim d As New Dictionary(Of Integer, String)() 'string DummyStr = String.Empty; Dim User As String = [String].Empty Dim ProcessStr As String = [String].Empty Try Dim WMIQuery As New ObjectQuery("Select * from Win32_Process") Dim WMIResult As New ManagementObjectSearcher(WMIQuery) If WMIResult.[Get]().Count = 0 Then Return d End If For Each oItem As ManagementObject In WMIResult.[Get]() Dim List As String() = New [String](1) {} oItem.InvokeMethod("GetOwner", DirectCast(List, Object())) ProcessStr = DirectCast(oItem("Name"), String) User = List(0) If User Is Nothing Then User = [String].Empty End If 'string[] StrSID = new String[1]; 'oItem.InvokeMethod("GetOwnerSid", (object[])StrSID); 'DummyStr = StrSID[0]; d.Add(Convert.ToInt32(oItem("ProcessId")), User) Next Catch E As Exception Console.WriteLine(E.Message) Return d End Try Return d End Function
Private Shared Sub Main(ByVal args As String()) Dim List As Dictionary(Of Integer, String) = GetAllProcessOwners() Dim processList As Process() = Process.GetProcesses() For Each p As Process In processList If List.ContainsKey(p.Id) Then Console.WriteLine(p.Id.ToString() & " "c & List(p.Id)) End If Next Console.ReadLine() End Sub
|
|