Изменения могут сохраняться в exe файле. Это можно сделать с помощью дописывания каких-либо данных в конец файла. Эти данные екзешник может впоследствии считывать сам из себя. Для их записи, однако, необходим еще один процесс, которому первый на время передает "бразды правления", а тот, в свою очередь, его модифицирует и запускает заново с нужными параметрами, как здесь раньше уже и отмечали по поводу dll'ки. Нехитрая процедура, не так ли? Только вот зачем еще один екзешник создавать, если можно просто писать данные в файл или реестр?