WinForm(C#)根据进程名获取进程的用户名?

//获得进程对象,以用来操作System.Diagnostics.Processmyps=newSystem.Diagnostics.Process();foreach(... //获得进程对象,以用来操作
System.Diagnostics.Process myps = new System.Diagnostics.Process();
foreach (Process ps in Process.GetProcesses())
{
//获取进程名
listBox1.Items.Add(ps.ProcessName);
//获取用户名,调用方法
//我想在这个循环里面调用一个方法,把进程名传进去,然后根据我传入的进程名返回该进程的用户名,该怎么办??>
}

希望高手能给个代码,谢谢!~!~~!~
2楼大哥: 你的pID是怎么来的啊? 不是进程名称?
展开
 我来答
百度网友94f02eb
推荐于2018-03-20 · TA获得超过8612个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4417万
展开全部
需要添加对 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;
}

进程名 是 p.ProcessName
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旋天渣观9129
2009-09-07 · TA获得超过1487个赞
知道大有可为答主
回答量:1443
采纳率:0%
帮助的人:1611万
展开全部
ps.StartInfo.UserName
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式