Saber si el script se ejecuto como administrador [Windows] | Python3

Iniciado por Drakaris, 21 Septiembre 2020, 20:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Drakaris

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().
Código (python) [Seleccionar]

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
Lo increible, no es lo que ves, sino como es

tincopasan

hola:
        seguramente hay muchas formas de hacerlo, una de ellas:
Código (python) [Seleccionar]
#-*- 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")
   

Drakaris

Cita de: tincopasan en 21 Septiembre 2020, 21:21 PM
hola:
        seguramente hay muchas formas de hacerlo, una de ellas:
Código (python) [Seleccionar]
#-*- 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:
Código (python) [Seleccionar]

#-*- coding: utf - 8 -*-
import getpass,ctypes
usuario = getpass.getuser()
if ctypes.windll.shell32.IsUserAnAdmin() != 1:
    print("necesita permisos de administrador")
    sys.exit()


Gracias!
Lo increible, no es lo que ves, sino como es