跟踪从我的程序中生成的进程的进程ID

时间:2016-03-03 14:45:08

标签: c# .net multithreading winforms visual-studio-2015

我需要跟踪从我的程序中产生的进程的ID,包括我的C#应用​​程序的根进程的id,即用户通过双击它的图标开始的进程。

还有其他人需要这样做吗?

这是一个很好的可靠方法吗?

我想象一个List(),但根据可用的数据,DataTable可能会更好。

2 个答案:

答案 0 :(得分:1)

 string process = "notepad.exe";
 string sql = string.Format("select * from win32_process where name='{0}'", process);
 ManagementObjectSearcher searcher = new ManagementObjectSearcher(sql);
 StringBuilder sb = new StringBuilder();
 foreach (ManagementObject mo in searcher.Get())
 {
       string pid = mo.Properties["ProcessId"].Value.ToString();
       string cimtime = mo.Properties["CreationDate"].Value.ToString();

       cimtime = cimtime.Substring(0, cimtime.IndexOf('.'));
       string format = "yyyyMMddHHmmss";
       DateTime startTime = DateTime.ParseExact(cimtime, format, System.Globalization.CultureInfo.CurrentCulture);
       sb.AppendFormat("PID:{0}\t启动时间:{1}", pid, startTime);
       sb.AppendLine();
 }
 MessageBox.Show(sb.ToString());

enter image description here

答案 1 :(得分:0)

Process currentProcess = Process.GetCurrentProcess();
var id = currentProcess.Id;

您需要参考

using System.Diagnostics;