Вы собираетесь где-то хранить состояние. Есть много и много мест, где вы можете сделать это, и техника, используемая в каждом случае, отличается:
В конфигурационном файле (который вы специально отключили)
В реестре, который некоторые могут считать устаревшим, но, безусловно, вариант.
На веб-сайте вне компьютера, на сервере, который вы пишете, или на веб-сайте, или что-то в этом роде, однако для этого требуется инфраструктура и сетевой пинг.
Вы можете сделать что-то, как вы предлагаете, где вы динамически перекомпилируете DLL или программу и корректируете исходный код. Это не сильно отличается от файла конфигурации - за исключением того, что файл конфигурации является исполняемым файлом - он также имеет недостаток, заключающийся в том, что многие пользователи с ограниченными правами не могут этого сделать, и могут не иметь разрешения на запись в том месте, где вы хотите его сохранить. (в Program Files например.)
Я уверен, что есть и другие способы. Однако, как и большинство проблем программирования, вы должны учитывать компромиссы и определять, что подходит именно вам.
Если вы можете предложить больше информации и контекста (например, почему вы не можете просто записать это в файл конфигурации), возможно, мы поможем вам лучше судить.
Если это работает для вас, одним из простых решений может быть добавление установщиком фиктивного файла с именем, например, neverrun.txt. При запуске проверьте наличие файла. Если он есть, выполните код, затем удалите файл. Таким образом, для выполнения этого кода требуется переустановка.
Однако есть ряд проблем с этим подходом. Он не является надежно защищенным (легко установить начальное состояние и воссоздать файл), и ваши пользователи могут не иметь возможности удалить файл в Program Files или в том месте, где вы его выгружаете. Нам нужно больше контекста, чтобы понять основные цели, которые у вас есть.