Umgebungsvariablen anderer Benutzer auflösen

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
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ich arbeite viel mit Pfaden und Umgebungsvariablen. Solange ich mein Programm als Benutzer aufrufe, ist das alles unproblematisch. Wenn mein Python-Programm aber als Windows-Dienst läuft, hat man ja nur eingeschränkten Zugriff auf Umgebungsvariablen.

Kann ich die lokalen Umgebungsvariablen eines anderen Benutzers auslesen? Was brauche ich dafür -> die lokale UserID oder den Benutzernamen? Bleiben wir bei dem Beispiel, dass mein Programm als Dienst und damit mit Admin- bzw. Systemrechten läuft…

Alternativ: Wie könnte man das bewerkstelligen? RunAs fällt mir da spontan unter Windows ein und natürlich sudo unter Linux, aber das muss ja nicht immer installiert sein. Ich suche also was 100%-ig verlässliches…
BlackJack

Umgebungsvariablen gelten nicht für Benutzer sondern für Prozesse. Und wenn man die einfach so von fremden Prozessen abfragen könnte, wäre das eine ziemlich böse Sicherheitslücke.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

droptix hat geschrieben:Wenn mein Python-Programm aber als Windows-Dienst läuft, hat man ja nur eingeschränkten Zugriff auf Umgebungsvariablen.
Hallo droptix!

Du kannst deinen Dienst auch im Kontext eines Benutzers arbeiten lassen. Das kannst du im Dienstmanager einstellen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ja ich weiß, aber der Dienst soll schon mit Systemrechten laufen, muss aber auch Benutzeranfragen bearbeiten. Dafür braucht der eben hin und wieder die Umgebungsvariablen des Benutzers. Der Benutzer kommuniziert ja über einen Client, der im Benutzerkontext ausgeführt wird. Eigentlich könnte der einfach "seine" Umgebungsvariablen an den Server schicken…

Ich denke, so wird das was. Danke!
Antworten