code by fperson
user_6919294
python
5 months ago
5.6 kB
175
Indexable
""" Code by fperson Ten skrypt wymusza przejście systemu Windows w tryb awaryjny. Umożliwia użytkownikowi: - Zaplanowanie przejścia systemu w tryb awaryjny na określony czas. - Natychmiastowe włączenie trybu awaryjnego. - Przywrócenie normalnego uruchamiania systemu po potwierdzeniu. Używa biblioteki tkinter do stworzenia prostego interfejsu graficznego. """ import tkinter as tk from tkinter import ttk from tkinter import messagebox import threading import time import os def schedule_safe_mode(): if time_choice.get() == "Własny": try: hours = int(hours_entry.get()) minutes = int(minutes_entry.get()) seconds = int(seconds_entry.get()) total_seconds = hours * 3600 + minutes * 60 + seconds except ValueError: messagebox.showerror("Błąd", "Proszę wprowadzić poprawne wartości liczbowe.") return else: total_seconds = time_options[time_choice.get()] if total_seconds <= 0: messagebox.showerror("Błąd", "Proszę wybrać dodatni czas.") return threading.Thread(target=countdown_thread, args=(total_seconds,), daemon=True).start() hours, remainder = divmod(total_seconds, 3600) minutes, seconds = divmod(remainder, 60) messagebox.showinfo("Zaplanowano", f"System przejdzie w tryb awaryjny za {hours}h {minutes}m {seconds}s.") def countdown_thread(total_seconds): time.sleep(total_seconds) enable_safe_mode() def enable_safe_mode(): try: # Komenda do włączenia trybu awaryjnego na jedno uruchomienie os.system('bcdedit /set {current} safeboot minimal') # Restart systemu os.system('shutdown /r /t 0') except Exception as e: messagebox.showerror("Błąd", f"Nie udało się przełączyć systemu w tryb awaryjny: {str(e)}") def restore_normal_boot(): # Zapytaj użytkownika o potwierdzenie result = messagebox.askyesno("Potwierdzenie", "Czy na pewno chcesz przywrócić normalne uruchamianie i zrestartować system?") if result: try: # Komenda do przywrócenia normalnego uruchamiania os.system('bcdedit /deletevalue {current} safeboot') # Restart systemu os.system('shutdown /r /t 0') except Exception as e: messagebox.showerror("Błąd", f"Nie udało się przywrócić normalnego uruchamiania: {str(e)}") def activate_safe_mode_now(): enable_safe_mode() def on_time_choice_change(*args): if time_choice.get() == "Własny": hours_entry.config(state="normal") minutes_entry.config(state="normal") seconds_entry.config(state="normal") else: hours_entry.config(state="disabled") minutes_entry.config(state="disabled") seconds_entry.config(state="disabled") # Funkcja umieszczająca okno na środku ekranu def center_window(window): window.update_idletasks() window_width = window.winfo_width() window_height = window.winfo_height() screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() position_top = int(screen_height / 2 - window_height / 2) position_right = int(screen_width / 2 - window_width / 2) window.geometry(f'{window_width}x{window_height}+{position_right}+{position_top}') # Tworzenie głównego okna root = tk.Tk() root.title("Awaryjne uruchamianie systemu") # Predefiniowane opcje czasowe time_options = { "5 minut": 300, "15 minut": 900, "30 minut": 1800, "1 godzina": 3600, "2 godziny": 7200, "Własny": 0 } # Tworzenie i rozmieszczanie widgetów tk.Label(root, text="Wybierz czas:").grid(row=0, column=0, padx=5, pady=5) time_choice = ttk.Combobox(root, values=list(time_options.keys()), state="readonly") time_choice.grid(row=0, column=1, padx=5, pady=5) time_choice.set("Wybierz opcję") time_choice.bind("<<ComboboxSelected>>", on_time_choice_change) tk.Label(root, text="Godziny:").grid(row=1, column=0, padx=5, pady=5) hours_entry = tk.Entry(root, state="disabled") hours_entry.grid(row=1, column=1, padx=5, pady=5) tk.Label(root, text="Minuty:").grid(row=2, column=0, padx=5, pady=5) minutes_entry = tk.Entry(root, state="disabled") minutes_entry.grid(row=2, column=1, padx=5, pady=5) tk.Label(root, text="Sekundy:").grid(row=3, column=0, padx=5, pady=5) seconds_entry = tk.Entry(root, state="disabled") seconds_entry.grid(row=3, column=1, padx=5, pady=5) # Przycisk do planowania trybu awaryjnego schedule_button = tk.Button(root, text="Zaplanuj tryb awaryjny", command=schedule_safe_mode) schedule_button.grid(row=4, column=0, columnspan=2, pady=10) # Przycisk do natychmiastowego uruchomienia trybu awaryjnego activate_now_button = tk.Button(root, text="Włącz tryb awaryjny natychmiast", command=activate_safe_mode_now) activate_now_button.grid(row=5, column=0, columnspan=2, pady=10) # Przycisk do przywrócenia normalnego uruchamiania restore_normal_button = tk.Button(root, text="Przywróć normalne uruchamianie", command=restore_normal_boot) restore_normal_button.grid(row=6, column=0, columnspan=2, pady=10) # Etykieta na dole okna label = tk.Label(root, text="code by fperson", fg="gray") label.grid(row=7, column=0, columnspan=2, pady=10) # Ustawianie okna na środku ekranu root.update_idletasks() # Upewnia się, że wszystkie elementy GUI są załadowane center_window(root) root.mainloop()
Editor is loading...
Leave a Comment