IPchangeNG/privilegios.py

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()