回 帖 发 新 帖 刷新版面

主题:如何获得进程的用户名称?

C#中如何获得进程的用户名称?就像任务管理器进程那一栏中每个进程都对应一个用户名。我在Process类里找了半天也没找到相关的方法或者属性,还请DX帮忙!

回复列表 (共6个回复)

沙发

Process.StartInfo.UserName

板凳

...显示不出来啊~~~~

我的代码如下:
foreach (Process pro in Process.GetProcesses())
            {
                lvi = new ListViewItem();
                lvi.Text = pro.ProcessName;
                lviSub = new ListViewItem.ListViewSubItem();
                lviSub.Text = pro.StartInfo.UserName;
                lvi.SubItems.Add(lviSub);
                lviSub=new ListViewItem.ListViewSubItem();
                lviSub.Text = "";
                lvi.SubItems.Add(lviSub);
                lviSub = new ListViewItem.ListViewSubItem();
                lviSub.Text = Convert.ToString((pro.PagedSystemMemorySize64) / 1024) + "K";
                lvi.SubItems.Add(lviSub);
                listView_Pro.Items.Add(lvi);
            }
运行结果用户名那一栏依然全部为空~

3 楼

这种方法是取不到的,你还是使用wmi来做任务管理器一类的程序:
在你的项目里先添加引用System.Management,然后在程序里:
using System.Management;

ManagementObjectSearcher psch=new ManagementObjectSearcher("select * from Win32_Process");   
  listView1.Columns.Clear();   
  listView1.Items.Clear();   
  listView1.Columns.Add("进程ID",120,HorizontalAlignment.Left);   
  listView1.Columns.Add("进程名",150,HorizontalAlignment.Left);     
  listView1.Columns.Add("用户",120,HorizontalAlignment.Left);    
  foreach(ManagementObject mob in psch.Get())   
  {   
  ListViewItem li=new ListViewItem();   
  li.UseItemStyleForSubItems=false;   
  li.SubItems[0].Text=mob["processID"].ToString();   
  li.SubItems.Add(mob["Name"].ToString());   
  //以下显示用户名   
  string[] pob = new string[2];     
  mob.InvokeMethod("GetOwner",(object[])pob);   
  object so=pob[0];   
  if(so!=null)   
  li.SubItems.Add(so.ToString());   
  listView1.Items.Add(li);   
  }   

4 楼

呵呵,谢谢你~还有几个地方不太明白
mob["Name"]其中[]里面的字符串是如何确定的?再比如我要找内存占用及CPU使用应该怎么加呢?还有object so = pob[0];这句为何是pob[0]呢?pob中到底寸了什么呢?为什么要判空呢?
授人以鱼不如授人以渔哈!等待你的解释?

5 楼

案例:
http://www.cnblogs.com/KissKnife/archive/2007/06/01/681739.html

详情可参考msdn中wmi部分内容

另外,感谢longlong16指正
很多问题没有亲自实践~~~

6 楼

呵呵,感谢楼上。那篇文章我昨天已经看过了。不过由于代码不完整。我有几个地方不太明白。比如mDict 字典的定义是什么?之类的。还请longlong16解释

我来回复

您尚未登录,请登录后再回复。点此登录或注册