Определить путь запущенной программы - C#
Формулировка задачи:
Добрый вечер.
Подскажите пожалуйста, как определить откуда были запущены программы.
Раньше данный код работал
Сейчас программа выдает ошибку в item.MainModule - в отладчике нет данных
Может есть другой способ?
foreach (var item in Process.GetProcesses())
{
if (item.ProcessName == "info")
{
if (pach_info == item.MainModule.FileName)
{
return IS_QUIK = 1;
}
}
}Решение задачи: «Определить путь запущенной программы»
textual
Листинг программы
using System.Diagnostics;
using System.Linq;
using System.Management;
namespace Process02
{
class Program
{
public static void Main()
{
string Programm = "info";
foreach (var item in Process.GetProcesses().Where(n => n.ProcessName == Programm))
{
int Id = item.Id;
string s = GetProcessPath(Id);
}
}
public static string GetProcessPath(int processId)
{
string MethodResult = "";
try
{
string Query = "SELECT ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(Query))
{
using (ManagementObjectCollection moc = mos.Get())
{
string ExecutablePath = (from mo in moc.Cast<ManagementObject>() select mo["ExecutablePath"]).First().ToString();
MethodResult = ExecutablePath;
}
}
}
catch //(Exception ex)
{
//ex.HandleException();
}
return MethodResult;
}
}
}