Есть ли способ при первом запуске программы, собранной в exe (или даже обычный .py), переопределять переменные внутри нее?
То есть, допустим, у нас по умолчанию переменная в программе os = 'Operating System' при первом запуске переопределялась на os = 'Windows x64', например. И дальше при всех последующих запусках бралось новое значение.
Да, программа может изменять сама себя, но описанное вами намного лучше реализуется хранением подобных данных в каком-либо внешнем средстве конфигурации (ini-файл, реестр, прочее) и изменением её. Вам это зачем?
Сергей Горностаев, мне нужно реализовать привязку к железу (да, я знаю, что Питон для этого не самый лучший язык), поэтому ваш вариант не подходит. Мне нужно, чтобы пользователь не мог изменить эту переменную (я уж не говорю об изменении ячеек памяти, но не каким-нибудь более простым способом).
Bastax13, при первом запуске получаете HWID (самая большая проблема будет с этим), на его основе генерируете некоторую последовательность, шифруете и сохраняете в файле. При следующем старте опять получаете HWID, проверяете наличие файла, расшифровываете, сравниваете полученные данные с полученным HWID. Если файла нет или данные в нём неверные, выдаёте ошибку и завершаете работу. Пользователь не сможет записать что-то в файл не зная алгоритма и ключа шифрования. А так как расковырять python-программы очень легко, код шифрования лучше написать в виде pyd-библиотеки. Так это обычно делается.
Сергей Горностаев, спасибо за идею, пока думал просто сравнивать HWID. Можно, пожалуйста, поподробнее про pyd библиотеку? Сейчас погуглил, но ничего про процесс написания не нашел.
Bastax13, модули для Python можно писать на C и компилировать в бинарные библиотеки. Почитать можно здесь. А если C - это для вас не вариант, то можно посмотреть в сторону транслятора Cython.
Сергей Горностаев, Сергей Горностаев, кстати добавлю. Не надо расшифровывать то что в файле. Надо шифровать данные каждый раз, и если файл есть - сравнивать результаты шифрования.