Загрузка...

One-time program

Thread in Python created by Shalam Nov 12, 2024. 177 views

  1. Shalam
    Shalam Topic starter Nov 12, 2024 0 Oct 27, 2024
    Привествую всех обывателей форума. Хотелось бы узнать, возможно ли как то при запуске исполняемого фаила EXE скомпилированного с помощью PyInstaller , сделать так чтобы код при первом запуске ( портил себя ) и при повторном выдавал ошибку. Вопрос может и глупый но извиняюсь, какой есть. Заранее благодарю за помощь
     
  2. Нечисть
    Нечисть Nov 12, 2024 2,853 Aug 25, 2018
    возможно
     
  3. Апатия
    Можно, но в чем смысл вообще? Я как пользователь просто заново ее скачаю, или заранее сделаю копию
     
  4. Loss
    Loss Nov 12, 2024 даун эщкерешко 8,189 Apr 18, 2018
    да можно просто в реестре условном устанавливать флаг о том, что он уже запускался на пк и далее выдавать ошибку типа
     
  5. eternal
    eternal Nov 12, 2024 в профиле розыгрыш на 10 уников 17,419 Aug 2, 2018
    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()
     
    1. View previous comments (5)
    2. Апатия
      avatareternal , флаг хранить отдельным файлом сомнительно, я бы сделал так, чтобы программа при окончании работы программы бат файл создавала, и открывала, а там через батник хоть удалить ее целиком можно
    3. Shalam Topic starter
      avatarАпатия, винда или ант разве даст сделать?
    4. Апатия
      avatarShalam, рандом, деыендер будет у некоторых людей жаловаться на такие приколы, у некоторых не будет, я делал подобное, но использовал такой фокус как updater для программы, у процентов 15 людей деыендер жаловался
  6. Eliot_inactive8821727
    Eliot_inactive8821727 Nov 12, 2024 Banned 242 Nov 4, 2024
    MUTEX сделай и всае
     
Loading...