4

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

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

这是一些代码:

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

不用说,我没有赢。

4

1 回答 1

4

使用Process.MainModuleProcessModule.FileName属性。

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

请注意,进程可能随时退出。如果在进程退出(或已退出)时巧合地查询了进程的 MainModule,则抛出异常。

于 2013-11-15T10:18:08.013 回答