none
как получить процессы запущенные под определенным юзером? RRS feed

  • Вопрос

  •  
    For Each clsProcess As Process In Process.GetProcesses()
                If clsProcess.ProcessName.StartsWith(name) Then
                                 MsgBox("да")
                    Return True
                End If
            Next

    так я могу просмотреть все процессы,но юзеров не могу увидить(   т.к . Process.GetProcesses() не дает юзеров 
    23 июля 2012 г. 19:53

Ответы

Все ответы

    • Предложено в качестве ответа LXGDARK 24 июля 2012 г. 8:42
    • Помечено в качестве ответа gangsterovich 24 июля 2012 г. 23:00
    24 июля 2012 г. 5:14
    Модератор
  • мне нужнен код на vb.net

    переведя с шарпа я получил вот это

    Imports System.Collections.Generic
    Imports System.Diagnostics
    Imports System.Management
    Imports System.Text
    
    Namespace ConsoleApplication2
    	Class Program
    
    		Public Shared Function GetProcessOwner(PID As Integer, ByRef User As String) As String
    			Dim DummyStr As String = [String].Empty
    			User = [String].Empty
    			Dim ProcessStr As String = [String].Empty
    			Try
    				Dim WMIQuery As New ObjectQuery(String.Format("Select * from Win32_Process Where ProcessID ={0}", PID.ToString()))
    				Dim WMIResult As New ManagementObjectSearcher(WMIQuery)
    				If WMIResult.[Get]().Count = 0 Then
    					Return DummyStr
    				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
    					Dim StrSID As String() = New [String](0) {}
    					oItem.InvokeMethod("GetOwnerSid", DirectCast(StrSID, Object()))
    					DummyStr = StrSID(0)
    					Return DummyStr
    				Next
    			Catch
    				Return DummyStr
    			End Try
    			Return DummyStr
    		End Function
    
    		Private Shared Sub Main(args As String())
    			Dim User As String
    
    			Dim processList As Process() = Process.GetProcesses()
    			For Each p As Process In processList
    				GetProcessOwner(p.Id, User)
    
    				Console.WriteLine(p.Id.ToString() & " "C & User)
    			Next
    			Console.ReadLine()
    
    
    
    		End Sub
    	End Class
    End Namespace
    но подчеркивает " As New ObjectQuery" и  в строчках  " As New ManagementObjectSearcher(WMIQuery)" . непойму что к чему

    24 июля 2012 г. 7:03
  • Можете воспользоваться онлайн трансляторами, их в сети много. Например вот этим.
    24 июля 2012 г. 7:21
    Модератор
  • я как раз в нем и перевел код с шарпа.вопрос не в этом.  непойму почему "тип ObjectQuery не определен" . незнаю как с WMI мудрить
    24 июля 2012 г. 8:12
  • А у Вас сборка System.Data.Entity.dll подключена, данный тип в ней определён.
    24 июля 2012 г. 8:19
    Модератор
  • нет.ща попробую.спасибо

    24 июля 2012 г. 8:27
  • А у Вас сборка System.Data.Entity.dll подключена, данный тип в ней определён.

    Судя по коду примера где импортируется это пространство имен все таки System.Management. То есть это сборку нужно добавить в проект.


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа gangsterovich 24 июля 2012 г. 8:40
    24 июля 2012 г. 8:29
  • А пространство имён импортировали, что там пишется теперь?
    24 июля 2012 г. 8:39
    Модератор
  • LXGDARK спасибо огромное) помогло
    24 июля 2012 г. 8:40
  • LXGDARK спасибо огромное) помогло
    Все так ответ на ваш вопрос дал ulcer, а я подсказал как заставить пример работать.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    24 июля 2012 г. 8:43