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.
hmueller
User
Beiträge: 39
Registriert: Montag 27. November 2006, 16:07
Wohnort: Linz, Oberösterreich

Ermittlung von Administratorrechten

Beitragvon hmueller » 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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Ermittlung von Administratorrechten

Beitragvon gerold » 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

Beitragvon hmueller » 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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » 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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » 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

Beitragvon hmueller » 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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder