#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); } }
Комментариев нет:
Отправить комментарий