Привествую всех обывателей форума. Хотелось бы узнать, возможно ли как то при запуске исполняемого фаила EXE скомпилированного с помощью PyInstaller , сделать так чтобы код при первом запуске ( портил себя ) и при повторном выдавал ошибку. Вопрос может и глупый но извиняюсь, какой есть. Заранее благодарю за помощь
да можно просто в реестре условном устанавливать флаг о том, что он уже запускался на пк и далее выдавать ошибку типа
import os import sys # Путь к файлу-флагу, который будет говорить, что программа была запущена flag_file = 'first_run.flag' def corrupt_self(): """Функция для порчи самого себя при первом запуске.""" with open(sys.argv[0], 'rb') as f: data = f.read() # Пример порчи: заменяем определенные байты corrupted_data = data[:10] + b'\x00' * 10 + data[20:] with open(sys.argv[0], 'wb') as f: f.write(corrupted_data) def check_first_run(): """Проверка, был ли это первый запуск.""" if os.path.exists(flag_file): return False return True def main(): """Основная функция программы.""" if check_first_run(): print("Это первый запуск. Портим себя...") corrupt_self() # Создаем файл-флаг, чтобы в следующий раз программа не портировала себя with open(flag_file, 'w') as f: f.write('This file indicates the first run.') print("Программа испорчена и завершена.") else: print("Ошибка: программа была испорчена при первом запуске.") sys.exit(1) if __name__ == "__main__": main() Python import os import sys # Путь к файлу-флагу, который будет говорить, что программа была запущена flag_file = 'first_run.flag' def corrupt_self(): """Функция для порчи самого себя при первом запуске.""" with open(sys.argv[0], 'rb') as f: data = f.read() # Пример порчи: заменяем определенные байты corrupted_data = data[:10] + b'\x00' * 10 + data[20:] with open(sys.argv[0], 'wb') as f: f.write(corrupted_data) def check_first_run(): """Проверка, был ли это первый запуск.""" if os.path.exists(flag_file): return False return True def main(): """Основная функция программы.""" if check_first_run(): print("Это первый запуск. Портим себя...") corrupt_self() # Создаем файл-флаг, чтобы в следующий раз программа не портировала себя with open(flag_file, 'w') as f: f.write('This file indicates the first run.') print("Программа испорчена и завершена.") else: print("Ошибка: программа была испорчена при первом запуске.") sys.exit(1) if __name__ == "__main__": main()
eternal , флаг хранить отдельным файлом сомнительно, я бы сделал так, чтобы программа при окончании работы программы бат файл создавала, и открывала, а там через батник хоть удалить ее целиком можно
Shalam, рандом, деыендер будет у некоторых людей жаловаться на такие приколы, у некоторых не будет, я делал подобное, но использовал такой фокус как updater для программы, у процентов 15 людей деыендер жаловался