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.

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
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

  1. 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."
  2. 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 \\??