Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Путь к файлу процесса c#

#c_sharp #процесс


Получаю список процессов 

 System.Diagnostics.Process[] procList = System.Diagnostics.Process.GetProcesses();


Как узнать папку, где находится этот процесс ? 
Пытался так 

procList[0].MainModule.FileName  - возвращает null

procList[0].StartInfo.FileName  - возвращает пустую строку

Есть еще способы ? 
    


Ответы

Ответ 1



Если Вам нужно получить путь программы откуда запускаете свой файл: using System.Linq; using System.Diagnostics; try { foreach (var proc in Process.GetProcesses().Where(p => !string.IsNullOrEmpty(p.MainWindowTitle)).ToList()) { Console.WriteLine(proc.MainModule.FileName); } } catch { /*Тут ловим исключения*/ } Так же без использования Linq Console.WriteLine(Process.GetCurrentProcess().MainModule.FileName); Имя запускаемого файла можно узнать так: Console.WriteLine(Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)); Чтобы перечислить все папки через процессы можно воспользоваться таким способом: foreach (Process instance in Process.GetProcesses()) { try { Console.WriteLine(instance.ProcessName); Console.WriteLine(instance.MainModule.FileName); } catch (System.ComponentModel.Win32Exception w32ex) { Console.WriteLine(w32ex.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); } } Если же Вы хотите получить все папки процессов можно воспользоваться через WMI using (var mCollection = new ManagementClass("Win32_Process").GetInstances()) { foreach (ManagementObject process in mCollection) { Console.WriteLine((string)process["ExecutablePath"]); //Console.WriteLine(FileVersionInfo.GetVersionInfo((string)process["ExecutablePath"]).FileDescription); } }

Комментариев нет:

Отправить комментарий