如何在process. start()之后安全地获取进程Id

本文关键字:安全 获取 取进程 Id 之后 process start | 更新日期: 2023-09-27 18:01:28

当一个程序被复制到多个位置,然后单独启动时,有时会出现错误:

ProcessStartInfo startInfo = new ProcessStartInfo(exePath);
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.ErrorDialog = false;
Process process = new Process() { StartInfo = startInfo };
bool isStarted = process.Start();
int processId = process.Id; // Failed as bellow When the isStarted is false

系统。InvalidOperationException:没有进程与此相关联对象。

如何在process. start()之后安全地获取进程Id

由于您正在启动EXE文件,您不需要UseShellExecute功能。由于某些不可思议的原因,UseShellExecute默认设置为true。使用它会带来很多复杂性。

设置UseShellExecute为false, Start应始终返回true。那么,ID应该总是有效的。请确保处置Process实例。