如何使用C#获取计算机所有用户名以及用户下的的进程

类似与windows任务管理器的用户功能,可以查看不同用户下的进程

img

需要添加对 System.Management.dll 的引用

using System.Diagnostics; 
using System.Management;static void Main(string[] args) 
{ 
foreach (Process p in Process.GetProcesses()) 
{ 
Console.Write(p.ProcessName); 
Console.Write("----"); 
Console.WriteLine(GetProcessUserName(p.Id));
} 
Console.ReadKey(); 
}private static string GetProcessUserName(int pID) 
{ 
string text1 = null; 
SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID); 
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1); 
try 
{ 
foreach (ManagementObject disk in searcher1.Get()) 
{ 
ManagementBaseObject inPar = null; 
ManagementBaseObject outPar = null; 
inPar = disk.GetMethodParameters("GetOwner"); 
outPar = disk.InvokeMethod("GetOwner", inPar, null); 
text1 = outPar["User"].ToString(); 
break; 
} 
} 
catch 
{ 
text1 = "SYSTEM"; 
} 
return text1; 
}

https://bbs.csdn.net/topics/110044500

https://blog.csdn.net/an7800666/article/details/101476177