Je veux que mon application surveille et enregistre les processus qui sont démarrés et terminés dans la machine winxp pendant l'existence de mon application. Je ne veux pas obtenir tous les noms de processus qui sont en cours d'exécution. Comment puis-je réaliser cela ? Toute idée est appréciée. Merci.
Réponses
Trop de publicités?Vous pouvez utiliser WMI. Voici un article : Utilisation de WMI pour surveiller la création, la suppression et la modification des processus dans .NET
Le moyen le plus simple, sans s'introduire dans les mécanismes internes de Windows, serait d'interroger la liste des processus en cours de temps en temps.
using System.Diagnostics;
// Poll every 5 seconds
while(true)
{
// Get a list of running processes
Process[] processlist = Process.GetProcesses();
// Do logging
// ...
Thread.Sleep(5000);
}
Utiliser WMI ... voir este pour une introduction.
Vous pouvez lister tous les processus en utilisant Process.GetProcesses
.
Vous pouvez alors surveiller chaque processus dans le tableau de processus retourné.
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);
}
}