我正在编写一个保持活动的服务,以查看进程是否已启动并正在运行。我有几个同名的进程用完了不同的工作目录。
因此,我希望将WorkingDirectory
属性用作唯一标识符。但是,当我询问所有这些属性时,该值为空。
以下是一些代码:
foreach (Process process in Process.GetProcesses())
if (!string.IsNullOrWhiteSpace(process.StartInfo.WorkingDirectory))
Console.WriteLine("Winning!!!");
毋庸置疑,我没有赢。
答案 0 :(得分:4)
使用 Process.MainModule 和 ProcessModule.FileName 属性。
foreach (Process process in Process.GetProcesses())
{
string executableFilePath = process.MainModule.FileName;
string executableDirectory = Path.GetDirectoryName(executableFilePath);
}
请注意,进程可以随时退出。如果恰巧在进程退出(或已退出)时查询进程'MainModule',则抛出异常。