import ctypes import sys import os import subprocess import re def is_admin(): """Verifica si el script se está ejecutando con privilegios de administrador.""" try: return ctypes.windll.shell32.IsUserAnAdmin() except: return False def run_as_admin(argv=None, debug=False): """Ejecuta el script como administrador.""" shell32 = ctypes.windll.shell32 if argv is None and shell32.IsUserAnAdmin(): # Ya estamos ejecutando como administrador, no es necesario hacer nada return True if argv is None: argv = sys.argv if hasattr(sys, '_MEIPASS'): # Soporte para PyInstaller arguments = map(str, argv[1:]) else: arguments = map(str, argv) argument_line = u' '.join(arguments) executable = str(sys.executable) if debug: print(f'Command line: {executable} {argument_line}') ret = shell32.ShellExecuteW(None, "runas", executable, argument_line, None, 1) if int(ret) <= 32: return False return None def main(): if not is_admin(): # Si no se está ejecutando como administrador, solicitar elevación result = run_as_admin() if result is True: print("Ejecutando como administrador.") elif result is False: print("No se pudo obtener privilegios de administrador.") return else: # El script se reinició con privilegios de administrador return # Aquí va el resto del código de tu script... # Por ejemplo: # save_current_ip() # ... if __name__ == "__main__": main()