Вы можете использовать API-интерфейс Application Recovery & Restart Manager, который был представлен в Windows Vista. Это неуправляемый (C) API, однако есть управляемые оболочки, доступные в Windows API Code Pack .
Это хорошая возможность для добавления в ваше приложение в любом случае, поскольку она предоставляет пользователю более приятные возможности в случае сбоя (когда!) Вашего приложения. Вы даже можете написать обратный вызов, в котором сохраняется информация о том, что делал пользователь, а затем восстановить это состояние при перезапуске приложения.
Основное использование API заключается в добавлении следующей строки где-нибудь при запуске приложения:
ApplicationRestartRecoveryManager.RegisterForApplicationRestart( new RestartSettings( "restart", RestartRestrictions.None ) );