Страницы

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

пятница, 1 марта 2019 г.

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

Получаю список процессов
System.Diagnostics.Process[] procList = System.Diagnostics.Process.GetProcesses();
Как узнать папку, где находится этот процесс ? Пытался так
procList[0].MainModule.FileName - возвращает null
procList[0].StartInfo.FileName - возвращает пустую строку
Есть еще способы ?


Ответ

Если Вам нужно получить путь программы откуда запускаете свой файл:
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); } }

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

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