Это краткое изложение моих комментариев выше
Да, это возможно. Если вы хотите иметь более стабильную среду тестирования, вы можете создать суррогатную версию .NET (которая вызывается вашими тестами), которая ничего не делает, кроме как вызывает хитроумные библиотеки DLL. Таким образом, если процесс поврежден, он вытеснит только суррогат, а не ваш процесс тестирования.
Вы можете отслеживать, существует ли процесс (изящно или нет), используя Process. Если он записывает в файл, вы знаете, что все в порядке, если нет, вы можете предположить ошибку. Вы также можете использовать MS UI Automation для автоматического щелчка по любым кнопкам OK диалоговых окон ошибок времени выполнения.
Чистый результат - стабильная среда тестирования, в которой не нуждается человек.
Process 1 | Process 2
Unit tests --> | Surrogate exe --> Native DLL
C#.NET | .NET c/c++