我需要跟踪从我的程序中产生的进程的ID,包括我的C#应用程序的根进程的id,即用户通过双击它的图标开始的进程。
还有其他人需要这样做吗?
这是一个很好的可靠方法吗?
我想象一个List(),但根据可用的数据,DataTable可能会更好。
答案 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());
答案 1 :(得分:0)
Process currentProcess = Process.GetCurrentProcess();
var id = currentProcess.Id;
您需要参考
using System.Diagnostics;