如何在C#中确定进程的所有者?

如何在C#中确定进程的所有者?

我正在寻找名为“MyApp.exe”的进程,我想确保获得特定用户拥有的进程。

我使用以下代码获取进程列表:

Process[] processes = Process.GetProcessesByName("MyApp");

这给了我一个进程列表,但是在Process类中似乎没有办法确定谁拥有该进程?有关如何做到这一点的任何想法?


暮色呼如
浏览 584回答 3
3回答

慕桂英3389331

这是非C#扬声器的VB版本:Function GetProcessOwner(ProcessName As String) As String     Dim query = "Select * from Win32_Process Where Name = """ + ProcessName + """"     Dim searcher = New ManagementObjectSearcher(query)     Dim processList = searcher.Get()     For Each obj As ManagementObject In processList      Dim argList As String() = {String.Empty, String.Empty}       Dim returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList))       If returnVal = 0 Then         ' return DOMAIN\user        Dim owner = argList(1) + "\\" + argList(0)         Return owner      End If     Next     Return "NO OWNER"   End Function   Function GetProcessOwner(processId As Integer) As String     Dim query = "Select * From Win32_Process Where ProcessID = " & processId    Dim searcher = New ManagementObjectSearcher(query)     Dim processList = searcher.Get()     For Each obj As ManagementObject In processList      Dim argList As String() = {String.Empty, String.Empty}       Dim returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList))       If returnVal = 0 Then         ' return DOMAIN\user        Return argList(1) + "\\" + argList(0)       End If     Next     Return "NO OWNER"   End Function
打开App,查看更多内容
随时随地看视频慕课网APP