我希望我的应用程序监视并记录在我的应用程序存在期间在winxp机器中启动和终止的进程。我不想得到所有正在运行的进程名称。我怎样才能实现这一目标?任何想法都赞赏..谢谢。
答案 0 :(得分:4)
答案 1 :(得分:1)
最简单的方法是,无需挂钩任何Windows内部,就是经常轮询正在运行的进程列表。
using System.Diagnostics;
// Poll every 5 seconds
while(true)
{
// Get a list of running processes
Process[] processlist = Process.GetProcesses();
// Do logging
// ...
Thread.Sleep(5000);
}
答案 2 :(得分:1)
使用WMI ...有关简介,请参阅this。
答案 3 :(得分:1)
您可以使用Process.GetProcesses
列出所有流程。
然后,您可以监视返回的流程数组中的每个流程。
答案 4 :(得分:0)
public static void Monitor()
{
ArrayList existingProcesses = GetExistingProcess();
while (true)
{
ArrayList currentProcesses = new ArrayList();
currentProcesses = GetCurrentProcess();
ArrayList NewApps = new ArrayList(GetCurrentProcess());
foreach (var p in ExistingProcess)
{
NewApps.Remove(p);
}
string str = "";
foreach (string NewApp in NewApps)
{
str = "Process Name : " + NewApp + " Process ID : " + System.Diagnostics.Process.GetProcessesByName(NewApp)[0].Id.ToString() + " ";
}
MessageBox.Show(str);
}
}