Buenas, estoy haciendo un script de instalación con python y quiero obligar al usuario a que lo ejecute como administrador. Eso en entorno GNU/Linux, se hace con la funcion os.geteuid().
import os, sys
if os.geteuid() != 0:
print("Needs root privileges")
sys.exit()
#code
pero como se puede hacer con Windows?
Hay alguna manera de obtener los datos del usuario actual? por que se puede obtener el nombre del usuario con el que estoy corriendo el script.
Gracias de antemano
hola:
seguramente hay muchas formas de hacerlo, una de ellas:
#-*- coding: utf - 8 -*-
import getpass,ctypes
usuario = getpass.getuser()
if ctypes.windll.shell32.IsUserAnAdmin() != 0:
print("necesita permisos de administrador")
else:
print(usuario,"es administrador")
Cita de: tincopasan en 21 Septiembre 2020, 21:21 PM
hola:
seguramente hay muchas formas de hacerlo, una de ellas:
#-*- coding: utf - 8 -*-
import getpass,ctypes
usuario = getpass.getuser()
if ctypes.windll.shell32.IsUserAnAdmin() != 0:
print("necesita permisos de administrador")
else:
print(usuario,"es administrador")
Modifique un poco el código, en la consola cmd como administrador la funcion ctypes.windll.shell32.IsUserAnAdmin() me arrojaba 1 mientras que, cuando lo ejecutaba con una consola (sin "run as administrador") me arrojaba 0, por la cual hice:
#-*- coding: utf - 8 -*-
import getpass,ctypes
usuario = getpass.getuser()
if ctypes.windll.shell32.IsUserAnAdmin() != 1:
print("necesita permisos de administrador")
sys.exit()
Gracias!