终止 Windows 进程并 Return 退出代码 0

Kill Windows Process and Return Exit Code 0

有没有办法使用 C# 脚本终止进程并使进程的退出代码等于 0?我尝试使用 Process.Kill() 但 returns 退出代码 -1。我正在使用 Process.GetProcessesByName() 函数访问获取 Excel 进程。看起来有一个 Win32 API 函数 TerminateProcess 将退出代码作为参数,但我在 Process class.

中找不到任何等效项

编辑: 有趣的发现 - 当我在 Windows 任务管理器中找到 Excel 进程,然后单击“结束任务”时,Excel 进程以代码 0 退出。因此,看起来任务的信号管理器发送到进程不同于 System.Diagnostics.Kill()。现在我只需要弄清楚任务管理器正在发送什么信号并发送它。

我解决了我的问题,尽管它有点脏。如果有人知道不用 DllImport 就可以做到这一点的方法,那么分享它可能会有用。这是我所做的:

class MyClass
{
    [DllImport("Kernel32.dll", CharSet=CharSet.Auto)]
    public static extern bool TerminateProcess(IntPtr proc, uint uExit);
 
    public void MyFunction()
    {
        foreach (var process in Process.GetProcesssesByName("Excel")
        {
            TerminateProcess(my_process.Handle, 0);
        }
    }
}