Torna al Thread

<DllImport("kernel32.dll")> _ Private Shared Function OpenProcess(ByVal dwDesiredAccess As ProcessAccessRights, ByVal bInheritHandle As Boolean, ByVal dwProcessId As Integer) As IntPtr End Function <DllImport("kernel32.dll")> _ Private Shared Function QueryFullProcessImageName(ByVal hProcess As IntPtr, ByVal dwFlags As UInt32, ByVal lpExeName As StringBuilder, ByRef lpdwSize As Integer) As Boolean End Function <DllImport("kernel32.dll")> _ Private Shared Function CloseHandle(ByVal hObject As IntPtr) As Boolean End Function <Flags()> _ Private Enum ProcessAccessRights PROCESS_CREATE_THREAD = 2 PROCESS_QUERY_INFORMATION = &H400 PROCESS_QUERY_LIMITED_INFORMATION = &H1000 PROCESS_VM_OPERATION = 8 PROCESS_VM_READ = &H10 PROCESS_VM_WRITE = &H20 End Enum Private Function GetProcessesPaths(ByVal processName As String) As String() 'Ottiene i processi in base al nome Dim processes As Process() = Process.GetProcessesByName(processName) 'Crea l'array del risultato Dim result(processes.Length - 1) As String 'Itera fra i processi trovati For i As Integer = 0 To processes.Length - 1 'Ottiene l'handle di sistema per il processo Dim handle As IntPtr = OpenProcess(ProcessAccessRights.PROCESS_QUERY_INFORMATION, False, processes(i).Id) 'La dimensione massima del percorso Dim sz As Integer = &H200 'Crea uno stringBuilder che riceverà il nome del processo Dim sb As New StringBuilder(sz) 'Ottiene il percorso completo del processo QueryFullProcessImageName(handle, 0, sb, sz) 'Imposta il percorso nell'array result(i) = sb.ToString() 'Rilascia l'handle del processo CloseHandle(handle) Next i 'Ritorna il risultato Return result End Function
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5