56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
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()
|