Получаю список процессов
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);
}
}
Комментариев нет:
Отправить комментарий