Torna al Thread

[DllImport("kernel32.dll")] static extern bool QueryFullProcessImageName(IntPtr hProcess, uint dwFlags, StringBuilder lpExeName, ref int lpdwSize); [DllImport("kernel32.dll")] static extern IntPtr OpenProcess(ProcessAccessRights dwDesiredAccess, bool bInheritHandle, int dwProcessId); [Flags] enum ProcessAccessRights { PROCESS_QUERY_INFORMATION = 0x0400, PROCESS_QUERY_LIMITED_INFORMATION = 0x1000, PROCESS_CREATE_THREAD = 0x0002, PROCESS_VM_OPERATION = 0x0008, PROCESS_VM_WRITE = 0x0020, PROCESS_VM_READ = 0x0010 } [DllImport("kernel32.dll")] static extern bool CloseHandle(IntPtr hObject); private string[] GetProcessesPaths(string processName) { //Ottiene i processi in base al nome Process[] processes = Process.GetProcessesByName(processName); //Crea l'array del risultato string[] result = new string[processes.Length]; //Itera fra i processi trovati for (int i = 0; i < processes.Length; i++) { //Ottiene l'handle di sistema per il processo IntPtr handle = OpenProcess(ProcessAccessRights.PROCESS_QUERY_INFORMATION, false, processes[i].Id); //la dimensione massima del percorso int sz = 512; //Crea uno stringBuilder che riceverà il nome del processo StringBuilder sb = new StringBuilder(sz); //Ottiene il percorso completo processo QueryFullProcessImageName(handle, 0, sb, ref sz); //imposta il percorso result[i] = sb.ToString(); //Rilascia l'handle del processo CloseHandle(handle); } //Ritorna il risultato return result; }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5