Вы можете использовать событие AppDomain.ProcessExit
для перехвата, когда ваш процесс собирается завершиться и заставить его завершить другой процесс. Я не уверен относительно того, как это работает в ответ на необработанное исключение, поэтому вам, возможно, придется использовать AppDomain.UnhandledException
и заставить его использовать FailFast для обработки любых обычных исключений. Как часть этого обработчика, он убивает и другой процесс.