c#之process类相关整理

一、根据进程名获取进程的用户名?

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

  1. using System.Diagnostics;
  2. using System.Management;
  3.  
  4. static void Main(string[] args)
  5. {
  6. foreach (Process p in Process.GetProcesses())
  7. {
  8. Console.Write(p.ProcessName);
  9. Console.Write("----");
  10. Console.WriteLine(GetProcessUserName(p.Id));
  11. }
  12.  
  13. Console.ReadKey();
  14. }
  15.  
  16. private static string GetProcessUserName(int pID)
  17. {
  18. string text1 = null;
  19.  
  20. SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);
  21. ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);
  22.  
  23. try
  24. {
  25. foreach (ManagementObject disk in searcher1.Get())
  26. {
  27. ManagementBaseObject inPar = null;
  28. ManagementBaseObject outPar = null;
  29.  
  30. inPar = disk.GetMethodParameters("GetOwner");
  31.  
  32. outPar = disk.InvokeMethod("GetOwner", inPar, null);
  33.  
  34. text1 = outPar["User"].ToString();
  35. break;
  36. }
  37. }
  38. catch
  39. {
  40. text1 = "SYSTEM";
  41. }
  42.  
  43. return text1;
  44. }

进程名 是 p.ProcessName

二、获取进程

using System.Diagnostics;

【注】System.Diagnostics 命名空间提供特定的类,使您能够与系统进程、事件日志和性能计数器进行交互。

  1. string str = "";
  2. Process[] processes;
  3. //Get the list of current active processes.
  4. processes = System.Diagnostics.Process.GetProcesses();
  5. //Grab some basic information for each process.
  6. Process process;
  7. for(int i = 0;i<processes.Length-1;i++)
  8. {
  9. process = processes[i];
  10. str = str + Convert.ToString(process.Id) + " : " +
  11. process.ProcessName + "\r\n";
  12. }
  13. System.Windows.Forms.MessageBox.Show(str);
  14. txtProcessID.Text = processes[0].Id.ToString();
  15.  
  16. //显示进程相关信息
  17. string s = "";
  18. System.Int32 processid;
  19. Process process;
  20. processid = Int32.Parse(txtProcessID.Text);
  21. process = System.Diagnostics.Process.GetProcessById(processid);
  22. s = s + "该进程的总体优先级类别:" + Convert.ToString(process.PriorityClass) + " \r\n";
  23. s = s + "由该进程打开的句柄数:" + process.HandleCount + "\r\n";
  24. s = s + "该进程的主窗口标题:" + process.MainWindowTitle + "\r\n";
  25. s = s + " 该进程允许的最小工作集大小:" + process.MinWorkingSet.ToString() + " \r\n";
  26. s = s + "该进程允许的最大工作集大小:" + process.MaxWorkingSet.ToString() + " \r\n";
  27. s = s + "该进程的分页内存大小:" + process.PagedMemorySize + "\r\n";
  28. s = s + "该进程的峰值分页内存大小:" + process.PeakPagedMemorySize + "\r\n";
  29. System.Windows.Forms.MessageBox.Show(s);
  30. }
  31. catch
  32. {
  33. System.Windows.Forms.MessageBox.Show("不合法的进程ID!");
  34. }

【注】Int32 值类型表示值介于-2,147,483,648 到+2,147,483,647 之间的有符号整数。

Int32 提供了一些方法,来比较该类型的实例、将实例的值转换为它的String 表示形式以及将数字的String 表示形式转换为该类型的实例。

有关格式规范代码如何控制值类型的String 表示形式的信息,请参阅格式设置概述。

此类型实现接口IComparable、IFormattable 和IConvertible。使用Convert 类进行转换,而不是使用此类型的IConvertible 显式接口成员实现。

值得一提的是,Process 类具有很多成员变量,这些成员变量可以获得进程的几乎每一个细节。上面的例子中只是简单地选择了几个成员加以演示。如果开发中有需要,可以参考MSDN Library,查询Process类成员以获得更详细的信息,这里就不一一列出了。

三、杀死进程

  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. if (listView1.SelectedItems.Count > 0)
  4. {
  5. try
  6. {
  7. string proName = listView1.SelectedItems[0].Text;
  8. Process[] p = Process.GetProcessesByName(proName);
  9. p[0].Kill();
  10. MessageBox.Show("进程关闭成功!");
  11. GetProcess();
  12. }
  13. catch
  14. {
  15. MessageBox.Show("无法关闭此进程!");
  16. }
  17. }
  18. else
  19. {
  20. MessageBox.Show("请选择要终止的进程!");
  21. }
  22. }

四、C#中利用process类调用外部程序以及执行dos命令

  1. private string RunCmd(string command)
  2. {
  3. //实例一个Process类,启动一个独立进程
  4. Process p = new Process();
  5. //Process类有一个StartInfo属性
  6. //设定程序名
  7. p.StartInfo.FileName = "cmd.exe";
  8. //设定程式执行参数
  9. p.StartInfo.Arguments = "/c " + command;
  10. //关闭Shell的使用
  11. p.StartInfo.UseShellExecute = false;
  12. //重定向标准输入
  13. p.StartInfo.RedirectStandardInput = true;
  14. p.StartInfo.RedirectStandardOutput = true;
  15. //重定向错误输出
  16. p.StartInfo.RedirectStandardError = true;
  17. //设置不显示窗口
  18. p.StartInfo.CreateNoWindow = true;
  19. //启动
  20. p.Start();
  21. //也可以用这种方式输入要执行的命令
  22. //不过要记得加上Exit要不然下一行程式执行的时候会当机
  23. //p.StandardInput.WriteLine(command);
  24. //p.StandardInput.WriteLine("exit");
  25. //从输出流取得命令执行结果
  26. return p.StandardOutput.ReadToEnd();
  27. }

C#使用Process类杀死进程,执行命令等的更多相关文章

  1. 并发编程(二)--利用Process类开启进程、僵尸进程、孤儿进程、守护进程、互斥锁、队列与管道

    一.multiprocessing模块 1.multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似. 2.mu ...

  2. 并发编程(二)——利用Process类开启进程、僵尸进程、孤儿进程、守护进程、互斥锁、队列与管道

    Process类与开启进程.守护进程.互斥锁 一.multiprocessing模块 1.multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模 ...

  3. C# Process类_进程_应用程序域与上下文之间的关系

    进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非分布式),一个进程运行的失败也不会影响其他 ...

  4. C# Process类_进程管理器Demo

    Process用于管理计算机的进程,下面给出一个C#进程管理器的DEMO. namespace ProcessManager { public partial class Form1 : Form { ...

  5. 浅析Java.lang.Process类

    一.概述      Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序).      Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的 ...

  6. 深入研究java.lang.Process类

    一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序).       Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态 ...

  7. java中Runtime类和Process类的简单介绍

    在java.lang包当中定义了一个Runtime类,在java中对于Runtime类的定义如下: Java code public class Runtime extends Object 每个 J ...

  8. linux查找进程id端口占用和杀死进程

    linux 查找进程id端口占用和杀死进程 ps 命令用于查看当前正在运行的进程 辅助上grep 用于搜索匹配ps -ef | grep java ps ax : 显示当前系统进程的列表 ps aux ...

  9. shell学习笔记3-后台执行命令

    cron 系统调度进程,使用它在每天的某时间或一周.一月的不同时间运行 at 使用它在一个特点的时间允许一些特殊的作业 & 使用它在后台允许一个占用时间不长的进程 Nohup 使用它在后台运行 ...

随机推荐

  1. 洛谷 P4859 && BZOJ3622: 已经没有什么好害怕的了

    题目描述 给出 \(n\) 个数 \(a_i\)​ ,以及 \(n\) 个数 \(b_i\)​ ,要求两两配对使得 \(a>b\) 的对数减去 \(a<b\) 的对数等于 \(k\) . ...

  2. 115th LeetCode Weekly Contest Check Completeness of a Binary Tree

    Given a binary tree, determine if it is a complete binary tree. Definition of a complete binary tree ...

  3. HDU - 4763 找出特殊规律的串

    在一个Text串中找出Pattern串E以满足EAEBE,A B可以是任意串 看一眼觉得woc好难,后来看一下样例AB为空也可以 找观察一下E既是前缀也是后缀,很容易联想到next 最优情况EEE,那 ...

  4. css 之 BFC

    1,定义 BFC为块级格式化上下文,也就是一块区域内的封闭空间,里面元素无论怎么样,都不会影响外部元素. 2,触发条件 html 根元素 display的值为 inline-block.table-c ...

  5. filezilla绑定编辑器

    编辑  - >设置 ->文件格式关联 ->输入需要关联的编辑器的路径

  6. mutillidae2.6.48部署到phpstudy

    废话不多说,先上链接 mutillidae2.6.48链接: https://pan.baidu.com/s/1hssyiVy 密码: pw67 phpstudy2016.exe链接: https:/ ...

  7. 有关eval用法的小结

    首先要明白eval.这个是可以把字符串代码,直接当做js运行.比如 var ss="alert(1);";这个时候ss保存的是文本. 使用 eval(ss);这样就相当于,执行了s ...

  8. Oracle RAC集群搭建(二)-基础环境配置

    01,创建用户,用户组 [root@rac1 ~]# groupadd -g 501 oinstall [root@rac1 ~]# groupadd -g 502 dba [root@rac1 ~] ...

  9. Maven---pom.xml 详解(转)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  10. (转)source、sh、bash、./执行脚本的区别

    source.sh.bash../执行脚本的区别  原文:https://www.cnblogs.com/sparkbj/p/5976100.html 1.source命令用法: source Fil ...