Вы можете попробовать что-то вроде этого:
String str = "This is a \"sample\" ";
Console.WriteLine("Original string: {0}", str);
Console.WriteLine("Replaced: {0}", str.Replace('\"', '"'));
Обычно перезагрузки между установкой и выполнением - то, потому что Вы заменяете систему DLLs, которые заблокированы. Установщик настраивает выполнение однажды ключ реестра, который копирует DLLs во время начальной загрузки, прежде чем они будут заблокированы Windows, и затем Ваше приложение может использовать новый DLL, который Вы установили.
В целом этому высоко препятствуют. Не должно быть никакой причины больше ни для кого кроме самого Windows для перезагрузки после установки больше.
Я предложил бы возвратиться в отладчик для обнаружения большего количества деталей о том, почему приложение отказывает. Надо надеяться, Вы имеете достаточно трассировки в наличии в своем коде для разрешения того типа отладки.
В целом перезагрузка только требуется, если установщик должен заменить файлы, которые используются в настоящее время (и заблокированный) ОС. Иногда установщики будут допускать ошибку на стороне reboot-just-in-case, но это более редко, чем это раньше было.
У нас есть случай с установщиком, который я поддерживаю, где мы должны вызвать перезагрузку для перспективы только из-за контроля учётных записей и расширения полномочий. После того как установка завершена, мы должны инициировать программу как текущий пользовательский контекст, не поднятый контекст Vista.
В Вашем случае я подозреваю, что некоторые файлы не были правильно зарегистрированы, и просто необходимо придерживаться отладки ;)