ProcessStartInfo.WorkingDirectory属性为空
问题描述:
我正在编写保持活动服务以查看进程是否已启动并正在运行。我有几个进程使用同一个名字,并且运行在不同的工作目录中。ProcessStartInfo.WorkingDirectory属性为空
因此,我想使用WorkingDirectory
属性作为唯一标识符。但是,当我询问所有这些属性时,该值是空的。
下面是一些代码:
foreach (Process process in Process.GetProcesses())
if (!string.IsNullOrWhiteSpace(process.StartInfo.WorkingDirectory))
Console.WriteLine("Winning!!!");
不用说,我没有中奖。
答
使用Process.MainModule和ProcessModule.FileName属性。
foreach (Process process in Process.GetProcesses())
{
string executableFilePath = process.MainModule.FileName;
string executableDirectory = Path.GetDirectoryName(executableFilePath);
}
请注意,一个进程可以随时退出。如果巧合的是在进程退出(或退出)时查询进程的MainModule,则会抛出异常。
完美!谢谢。 –