Bonjour,
J'ai un programme qui liste les Process en mémoire dans une ListBox. Rien de compliqué à faire. Il suffit d'utiliser la méthode suivante pour récupérer la liste.
Process[] processlist = Process.GetProcesses();
Ensuite, pour chacune des lignes, donc pour chaque Process le bloc de code suivant est exécuté quand je double clique sur une ligne.
1 2 3 4 5 6 7 8 9 10
|
private void processListBox_MouseDoubleClick(object sender, EventArgs e)
{
Process p = (Process)processListBox.SelectedItem;
string path = Path.GetDirectoryName(p.MainModule.FileName);
FileInfo fi = new FileInfo(path + "\\Autostart.inf");
MessageBox.Show(p.MainModule.FileName +
"\n" + path +
"\n" + fi.Exists.ToString());
} |
Le but de ce code est de récupérer l'exécutable d'un Process en mémoire. Tout fonctionne très bien pour la plupart de mes Process. Ainsi double cliquer sur le Process "devenv" m'affiche uneMessageBox contenant le message suivant :
C:\\Program Files\\Microsoft Visual Studio 8\\Common7
\\IDE\\devenv.exeC:\\Program Files\\Microsoft Visual Studio 8\\Common7\\IDE
False
J'ai néamoins quelques réaction bizares
- La première, je m'y attendais, quand je double clique sur le Process "Idle" ou "System". Celui-ci n'étant lié à aucun fichier mon programme crash. Le message d'erreur est "Unable to enumerate the process modules."
- Le seconde, et c'est ici que je trouve ca bizare, se passe quand je double clique sur certain Process tel que "csrss" ou "winlogon". Le message d'erreur est "Illegal characters in path.". En effet en utilisant le debuger on peut remarque que le path est
\\??\\C:\\WINDOWS\\system32\\csrss.exe
Ma question (enfin) : d'où vien ce \\??
Partager