Я пытаюсь найти способ автоматизировать код регистрации исключений, чтобы добавить в стек уже доступную информацию.
Есть ли способ использовать отражение для получения значений всех переменных в стеке (локальных переменных и параметров) - я искренне сомневаюсь, что имена переменных доступны, но во многих случаях было бы полезно увидеть значения.





Не совсем. Для такого уровня копания вам, вероятно, понадобится что-то вроде WinDbg.
Если представляет интерес переменная специфический, вы можете добавить ее в исключение самостоятельно (хотя даже это вызывает проблемы с повторяющимися ключами, повторным входом и т. д.):
string dir = ...todo...
try
{
// some code
}
catch (Exception ex)
{
ex.Data.Add("dir", dir);
throw;
}
Вы можете проверить SUPERASSERT (SUPERASSERT переходит в .Net) Джона Роббинса, его книга дает отличное пошаговое руководство по одному из способов делать то, что вам нужно (плюс еще многое другое).