[VB.NET] Dal processo alla sua cartella

mercoledì 26 agosto 2009 - 16.18

Alfa93It Profilo | Newbie

Come faccio a sapere dove è la cartella di un determinato processo?

aiedail92 Profilo | Expert

Ciao

Puoi ottenere il nome dell'eseguibile usando la proprietà

Process.MainModule.FileName

Da questo puoi estrarre la cartella col metodo

Path.GetDirectoryName()

Luca

Alfa93It Profilo | Newbie

Quindi cosa devo fare per sapere per esempio il percorso di explorer.exe ?

aiedail92 Profilo | Expert

Te lo scrivo così al volo, non ho modo di verificarlo ora:

Dim procs as Process() = Process.GetProcessesByName("explorer.exe") If procs.Length > 0 Dim fullPath As String = procs(0).MainModule.FileName ' Questo è quello che vuoi tu: Dim directory as String = Path.GetDirectoryName(fullPath) End If

Se ci sono problemi fammi sapere

Luca

Alfa93It Profilo | Newbie

Non funziona...
Dim fullPath As String = procs(0).MainModule.FileName
Richiesta ReadProcessMemory o WriteProcessMemory completata solo parzialmente

aiedail92 Profilo | Expert

Non so cosa possa essere, ma l'alternativa che hai è usare l'API QueryFullProcessImageName, così definita:

BOOL WINAPI QueryFullProcessImageName( __in HANDLE hProcess, __in DWORD dwFlags, __out LPTSTR lpExeName, __in_out PDWORD lpdwSize );

Ecco un esempio del codice da usare (tratto da un altro mio post qui su .nethell e convertito in VB.Net):

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5