ProcessStartInfo.WorkingDirectory属性为空

时间:2013-11-15 10:08:59

标签: c# process

我正在编写一个保持活动的服务,以查看进程是否已启动并正在运行。我有几个同名的进程用完了不同的工作目录。

因此,我希望将WorkingDirectory属性用作唯一标识符。但是,当我询问所有这些属性时,该值为空。

以下是一些代码:

foreach (Process process in Process.GetProcesses())
    if (!string.IsNullOrWhiteSpace(process.StartInfo.WorkingDirectory))
        Console.WriteLine("Winning!!!");

毋庸置疑,我没有赢。

1 个答案:

答案 0 :(得分:4)

使用 Process.MainModule ProcessModule.FileName 属性。

foreach (Process process in Process.GetProcesses())
{
    string executableFilePath = process.MainModule.FileName;
    string executableDirectory = Path.GetDirectoryName(executableFilePath);
}

请注意,进程可以随时退出。如果恰巧在进程退出(或已退出)时查询进程'MainModule',则抛出异常。