Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Info lettura processi Windows x86 e x64
Forum - C# / VB.NET - Info lettura processi Windows x86 e x64

Avatar
natamas (Member)
Pro


Messaggi: 113
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 10:46
Giovedì, 12/03/2015
salve, sto cercando di creare un programma che legga processi con percorsi ed anche i moduli caricati (.dll) di alcuni di questi processi se presenti.
Io avevo abbozzato questo codice per leggere che funziona, solo che se creo il programma in 32bit leggo tutto tranne i percorsi e md5 dei processi a 64bit.
Se creo il programma a 64bit leggo tutto ma non i moduli a 32bit. Come posso fare?

Codice sorgente - presumibilmente C#

  1. public void loadProcess()
  2.       {
  3.                 Process[] PRC = Process.GetProcesses();
  4.  
  5.                 var currentSessionID = Process.GetCurrentProcess().SessionId;
  6.  
  7.                 Process[] sameAsthisSession = (from c in PRC where c.SessionId == currentSessionID select c).ToArray();
  8.  
  9.                 string PercProc;
  10.  
  11.                 string PercModule;
  12.  
  13.                 foreach (var p in sameAsthisSession)
  14.  
  15.                 {
  16.  
  17.                     string ProcCompleto;
  18.  
  19.                         PercProc = " (" + Path.GetFullPath(p.MainModule.FileName) + ")";
  20.  
  21.                     string md5 = "00000000000000";
  22.  
  23.                         md5 = GetMD5HashFromFile(PercProc.Replace("(", "").Replace(")", ""));
  24.  
  25.                         ProcCompleto = "> md5: " + md5 + " " + p.ProcessName + PercProc;
  26.  
  27. DataProcessi.Add(ProcCompleto);
  28.  
  29.                     if (InitProcDaControllare != "null")
  30.  
  31.                     {
  32.  
  33.                         if (p.ProcessName.StartsWith(InitProcDaControllare))
  34.  
  35.                         {
  36.  
  37.                             string ModCompleto;
  38.  
  39. ProcessModuleCollection pmod = p.Modules;
  40.  
  41.                             foreach (ProcessModule pr in pmod)
  42.  
  43.                             {
  44.  
  45. PercModule = " (" + Path.GetDirectoryName(pr.FileName) + ")";
  46.  
  47. ModCompleto = " => " + pr.ModuleName + PercModule;
  48.  
  49. DataModuli.Add(ModCompleto);
  50.  
  51.                                 }                    
  52.  
  53.                             }
  54.  
  55.                         }
  56.  
  57.                     }
  58.  
  59.                 }
  60.  
  61.         }


Il codice non è completo di tutte le Variabili.
I Data... sono delle list string dichiarate in altro form.
Questo è solo per farvi un'idea.
Grazie.


By Dargula
PM Quote
Avatar
darioza (Normal User)
Pro


Messaggi: 104
Iscritto: 06/10/2014

Segnala al moderatore
Postato alle 19:38
Venerdì, 13/03/2015
ciao, deduco che sei su piattaforma 64bit, giusto?
ma hai individuato il problema?
nel senso, dipende dai percorsi?
oppure semplicemente non list (tutti) i processi?

PM Quote
Avatar
natamas (Member)
Pro


Messaggi: 113
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 1:44
Sabato, 14/03/2015
Io houn win7 64bit ed ho creato il programma per funzionare con anyCPU ma preferibilmente a x86.
ora ho sistemato un po il codice ed ora i moduli x86 funzionano...
L'unico problema e che non riesco ad avere il percorso dei processi a 64bit utilizzando il mio programma a 32bit.
Esiste qualche funzione che fa accedere un processo a 32bit alla lettura dei processi a 64bit?


By Dargula
PM Quote