Seite 1 von 1

Ermittlung von Administratorrechten

Verfasst: Dienstag 14. August 2007, 12:00
von hmueller
Hallo!

Gibt es eine Methode um herauszufinden, ob der Benutzer über lokale Adminrechte unter Windows verfügt bzw. ob der Prozess mit Adminrechten gestartet wurde?

pywin32 habe ich schon eingebunden im Projekt, aber ich finde nirgends eine vernünftige Beschreibung wie das gehen könnte.

Code: Alles auswählen

import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
liefert ja nur, ob der User Admin ist und nicht ob der Prozess Adminrechte hat. Oder gibt es da keine einfache Lösung?

Re: Ermittlung von Administratorrechten

Verfasst: Dienstag 14. August 2007, 12:28
von gerold
hmueller hat geschrieben:Gibt es eine Methode um herauszufinden, ob der Benutzer über lokale Adminrechte unter Windows verfügt bzw. ob der Prozess mit Adminrechten gestartet wurde?
Hallo hmueller!

Ich denke mal, "IsUserAnAdmin()" testet nicht ob der angemeldete Benutzer ein Admin ist, sondern ob der soeben laufende Prozess im Kontext eines Admin gestartet wurde.

Ich kann mich auch täuschen. Das lässt sich aber ziemlich einfach ausprobieren. Starte dein Programm über den Taskmanager unter einem anderen Benutzernamen ohne Admin-Rechte. Dann siehst du ja was "in eine Datei geloggt" wurde, für die der Benutzer das Schreibrecht hat. ;-)

Oder du legst dir einen Account zu, der keine Admin-Rechte hat. Dein Programm kannst du dann über eine Verknüpfung starten. Dieser Verknüpfung kannst du dann explizit angeben, unter welchem Benutzernamen das Programm gestartet werden soll...

mfg
Gerold
:-)

Verfasst: Dienstag 14. August 2007, 12:38
von hmueller
Ok, danke.

Gibt es eigentlich sowas wie den erwähnten Befehl unter Linux auch?

Verfasst: Dienstag 14. August 2007, 12:56
von gerold
hmueller hat geschrieben:Gibt es eigentlich sowas wie den erwähnten Befehl unter Linux auch?
``whoami``?

EDIT:

Code: Alles auswählen

os.popen("whoami").read().strip()
EDIT2:

Code: Alles auswählen

import getpass
getpass.getuser()
EDIT3:

Code: Alles auswählen

os.popen("groups").read().strip().split()
mfg
Gerold
:-)

Verfasst: Dienstag 14. August 2007, 19:12
von Joghurt
Oder auch

Code: Alles auswählen

if os.geteuid() == 0:
  print "Laufe mit rootrechten"

Verfasst: Mittwoch 15. August 2007, 18:40
von hmueller
Danke sehr!