Совсем не понятно что это за продукт. Больше бы инфы.
Обычно в портативных версия настройки лежат в *.ini. Как вариант защиты от «портатирования» программы — перенести настройки в реестр и при инсталляции вносить в программу инфу, где лежат настройки. Если их там нет, то настойчиво требовать переустановить программу.
Если с точки зрения: программу устаналивали, либо принесли на флешке, то при установке генерировать запись в реестре с хешем даты/времени установки. Копию прятать в программе. Если совпали — устанавливали, нет — портативная версия.
Так получается, что оно смотрит сначала вокруг себя и ищет конфиги программы, потом ищет их в дирректории программы, если нет — создает.
Пишем мы в публичные дирректории(например в appdata), так что права администратора не нужны. Тоже самое с реестром.
То что вы описали, да, вариант. Но с датами не хочется заморачиваться, потому что при некоторых обновлениях(критических/мажорных) конфиг может сброситься.
Только косвенно — разрешена ли запись в текущую папку/в сложные места реестра и т.п.
А вообще — надо чинить систему обновления, чтобы она работала и так и так. Непортативное ПО мне не нравится.
Так получается, что оно смотрит сначала вокруг себя и ищет конфиги программы, потом ищет их в дирректории программы, если нет — создает.
Пишем мы в публичные дирректории(например в appdata), так что права администратора не нужны. Тоже самое с реестром.
Я про то и говорю, что если без прав администратора удалось сделать запись в защищённую папку, то значит либо защита отключена, либо портативная (ибо в них происходит отображение текущей папки на системные и реестр).
Инсталлятор пишет в реестр путь и версию.
Если при запуске программы получаем несоответствие пути — значит портативка. Если путь совпадает, но другая версия — показываем предупреждение, что перемешивать версии нехорошо; запускать программу в этом случае или несоответствия конфигов могут быть фатальны — решать вам.