PDA

View Full Version : Realizzare un taskmanager


lupin87
09-08-2007, 17:04
Salve a tutti,vorrei realizzare un taskmanager che mi permetta di vedere tutti i processi con i relativi file che usano...mi potete dire come devo fare?e poi,mi potete dire come fare la ricerca di dll o eseguibili specificando la società?lo vorrei realizzare con il visual basic 2005 .net...Grazie

nuovoUtente86
09-08-2007, 17:06
se guardi nella documentazione dovrebbero esserci delle librei apposite penso.

lupin87
09-08-2007, 17:08
è una confusione...per questo ho chiesto aiuto..lo sapevo già che c erano le librerie..quali?e poi come faccio a fare ciò che ho detto all inizio?

71104
09-08-2007, 19:27
per enumerare i processi esistono vari modi, il più "pulito" credo che sia l'usare le PSAPI, per l'esattezza EnumProcesses (http://msdn2.microsoft.com/en-us/library/ms682629.aspx).
per quanto riguarda l'enumerare i files in uso da un processo temo che non sia una cosa possibile con le sole funzioni documentate, già se ben ricordo non erano documentate nemmeno le funzioni usate dal Process Explorer per fare il lavoro inverso, ovvero vedere quali processi usano un certo file... non so se ora le abbiano documentate.

per quanto riguarda l'ultima frase... non sono sicuro di aver capito bene :wtf:
ma se vuoi fare quello che ho inteso io devi solo tenere presente che per sapere la "società" di un file eseguibile (posto che ne abbiano messa una nella descrizione) devi andare a guardare tra le risorse dello stesso e non è una cosa molto semplice.

lupin87
09-08-2007, 20:14
dunque..il mio progetto è questo:a volte capita di avere a che fare con dll che si inseriscono in explorer o di file exe che si inserisconpo in explorer...voglio realizzare questo programma per aiutare a trovare i virus facilmente..quindi praticamente voglio fare ad esempio una ricerca di tutti i file utilizzati dai processi tranne quelli che hanno la società microsoft per vedere i restanti file usati dai processi e per rilevare facilmente virus...spero di essere stato chiaro

71104
09-08-2007, 20:23
enumerare tutti i files utilizzati da un processo ed enumerare tutti i moduli caricati in un processo sono due cose molto differenti. la seconda è fattibilissima tramite EnumProcessModules (http://msdn2.microsoft.com/en-us/library/ms682631.aspx).

lupin87
09-08-2007, 20:26
enumerare tutti i files utilizzati da un processo ed enumerare tutti i moduli caricati in un processo sono due cose molto differenti. la seconda è fattibilissima tramite EnumProcessModules (http://msdn2.microsoft.com/en-us/library/ms682631.aspx).

quindi se mi entra un virus exe o dll che viene caricato da explorer io posso utilizzare EnumProcessModules per vederlo...giusto?

71104
09-08-2007, 20:35
quindi se mi entra un virus exe o dll che viene caricato da explorer io posso utilizzare EnumProcessModules per vederlo...giusto? nella STRAgrande maggioranza dei casi si.

Luc72
10-08-2007, 10:54
Salve a tutti,vorrei realizzare un taskmanager che mi permetta di vedere tutti i processi con i relativi file che usano...mi potete dire come devo fare?e poi,mi potete dire come fare la ricerca di dll o eseguibili specificando la società?lo vorrei realizzare con il visual basic 2005 .net...Grazie

puoi utilizzare il Process:

Private PRV_Process As Process
Private PRV_ProcessList() As Process
...

PRV_ProcessList = System.Diagnostics.Process.GetProcesses
Dim tmp_Process As Process

For Each tmp_Process In PRV_ProcessList
If tmp_Process.ProcessName = "nome del processo che vuoi controllare" Then
tmp_Process.modules() -> qui c'e' la lista completa delle dll...
End If
Next

lupin87
10-08-2007, 11:07
puoi utilizzare il Process:

Private PRV_Process As Process
Private PRV_ProcessList() As Process
...

PRV_ProcessList = System.Diagnostics.Process.GetProcesses
Dim tmp_Process As Process

For Each tmp_Process In PRV_ProcessList
If tmp_Process.ProcessName = "nome del processo che vuoi controllare" Then
tmp_Process.modules() -> qui c'e' la lista completa delle dll...
End If
Next

ma poi per dire per ogni modulo di un processo se la società<>"microsoft" (per esempio)aggiungi alla lista come faccio?

Luc72
10-08-2007, 11:27
dovresti trovarlo nel PerformanceCounter (mi sembra :) )

Private PRV_Performance As System.Diagnostics.PerformanceCounter

PRV_Process = System.Diagnostics.Process.GetProcessById(tmp_ID)
PRV_Performance = New PerformanceCounter("Process", "% Processor Time", PRV_Process.ProcessName)

questo ad esempio ritorna l'utilizzo della cpu

lupin87
10-08-2007, 11:54
dovresti trovarlo nel PerformanceCounter (mi sembra :) )

Private PRV_Performance As System.Diagnostics.PerformanceCounter

PRV_Process = System.Diagnostics.Process.GetProcessById(tmp_ID)
PRV_Performance = New PerformanceCounter("Process", "% Processor Time", PRV_Process.ProcessName)

questo ad esempio ritorna l'utilizzo della cpu

io non voglio l utilizzo della cpu

Luc72
10-08-2007, 12:05
io non voglio l utilizzo della cpu

Lo so! Era solo un esempio! Prova a vedere se il PerformanceCounter ritorna anche il nome della societa'.

71104
10-08-2007, 12:59
Lo so! Era solo un esempio! Prova a vedere se il PerformanceCounter ritorna anche il nome della societa'. io ribadisco che per ottenere quello bisogna andare a smanazzare tra le risorse e non è una cosa facile :O

Luc72
10-08-2007, 13:37
Il companyname lo trovi nel modules() del process

tmp_Process.Modules(idx).FileVersionInfo.CompanyName

lupin87
10-08-2007, 13:55
Il companyname lo trovi nel modules() del process

tmp_Process.Modules(idx).FileVersionInfo.CompanyName

grazie...luc72,ti potrei chiedere un favore?

Luc72
10-08-2007, 14:29
grazie...luc72,ti potrei chiedere un favore?

mah... dipende... basta che non mi chiedi soldi :D :D

lupin87
10-08-2007, 14:34
mah... dipende... basta che non mi chiedi soldi :D :D

Non ti preoccupare non ne ho bisogno..Comunque potrest farlo tu il sorgente di questo piccolo programmino e inviarmelo?Purtroppo non posso installare il visual studio 2005..:(....Praticamente all avvio,nel form load,dovresti scrivere tutti i file di ogni processo in una tabella formata da 2 colonne,una per il processo,e l altra per il relativo file...poi dovresti creare un form di ricerca con 2 opzioni:se filtrare tutti i file in base alla società scritta in una text oppure se filtrare tutti file che abbiano la società diversa dalla text...nella text possono essere scritte anche 2 società separate dal punto e virgola...però se lo fai mi serve sia il sorgente che l eseguibile...in un archivio winrar

Luc72
10-08-2007, 14:41
Ehm... a questo punto pero' i soldi te li chiedo io!!!! :cool: ho gia' poco tempo libero.. non posso mettermi a programmare per altri, altrimenti e' la volta buona che :muro: :muro: :muro:

lupin87
10-08-2007, 14:51
Ehm... a questo punto pero' i soldi te li chiedo io!!!! :cool: ho gia' poco tempo libero.. non posso mettermi a programmare per altri, altrimenti e' la volta buona che :muro: :muro: :muro:

grazie lo stesso

71104
10-08-2007, 15:54
Il companyname lo trovi nel modules() del process

tmp_Process.Modules(idx).FileVersionInfo.CompanyName ok me ne vado con umiliazione :ops2:

lupin87
10-08-2007, 15:56
ok me ne vado con umiliazione :ops2:

conoscere tutte le librerie del visual studio non è cosa facile...anzi...se ti vuoi rifare mi faresti il programma che ho chiesto a Luc72?

71104
10-08-2007, 16:02
conoscere tutte le librerie del visual studio non è cosa facile...anzi...se ti vuoi rifare mi faresti il programma che ho chiesto a Luc72? per quanto?

lupin87
10-08-2007, 16:04
gratis..considerando che io lo so fare...non posso farlo solo per mancanza di spazio...:(

71104
10-08-2007, 16:06
gratis..considerando che io lo so fare...non posso farlo solo per mancanza di spazio...:( questo era meglio che non lo dicevi, in quanto adesso chiunque te lo faccia ti chiederà il prezzo di un hard disk nuovo :D :D :D

PS: che tu lo sappia fare non è che importi molto a qualcuno :asd:

lupin87
10-08-2007, 16:08
questo era meglio che non lo dicevi, in quanto adesso chiunque te lo faccia ti chiederà il prezzo di un hard disk nuovo :D :D :D

PS: che tu lo sappia fare non è che importi molto a qualcuno :asd:

giusto...ma io ci riuscirò a farlo da solo..costi quel che costi:Prrr:...alla fine poi era una proposta per farti riscattare da quella che avevi definito umiliazione....:Prrr:

71104
10-08-2007, 16:10
giusto...ma io ci riuscirò a farlo da solo..costi quel che costi:Prrr:...alla fine poi era una proposta per farti riscattare da quella che avevi definito umiliazione....:Prrr: se fossi interessato all'offerta potrei risponderti: "ti costerà un hard disk nuovo, ma io posso fartelo ai 3/4 del prezzo". e così ti converrebbe fartelo fare da me :Prrr:

71104
10-08-2007, 16:12
alla fine poi era una proposta per farti riscattare da quella che avevi definito umiliazione....:Prrr: si, e ti pare che io faccio programmi gratis solo per far vedere che li so fare... :huh:

Luc72
10-08-2007, 16:35
ok me ne vado con umiliazione :ops2:

il debug e' il mio migliore amico :D

lupin87
10-08-2007, 16:39
il debug e' il mio migliore amico :D

anche il mio...all università molte persone che programmavano non lo conoscevano e non lo sapevano nemmeno usare...a me invece piaceva molto usarlo,soprattutto lo step by step