Ermittlung von Administratorrechten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hmueller
User
Beiträge: 39
Registriert: Montag 27. November 2006, 16:07
Wohnort: Linz, Oberösterreich

Dienstag 14. August 2007, 12:00

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?
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 14. August 2007, 12:28

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
hmueller
User
Beiträge: 39
Registriert: Montag 27. November 2006, 16:07
Wohnort: Linz, Oberösterreich

Dienstag 14. August 2007, 12:38

Ok, danke.

Gibt es eigentlich sowas wie den erwähnten Befehl unter Linux auch?
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 14. August 2007, 12:56

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Dienstag 14. August 2007, 19:12

Oder auch

Code: Alles auswählen

if os.geteuid() == 0:
  print "Laufe mit rootrechten"
hmueller
User
Beiträge: 39
Registriert: Montag 27. November 2006, 16:07
Wohnort: Linz, Oberösterreich

Mittwoch 15. August 2007, 18:40

Danke sehr!
I must not fear. Fear is the mind-killer. Fear is the little death that brings total obliteration.
I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path.
Antworten