Rechte eines Systemservice

relo

Grünschnabel
Hallo erstmal,

ich versuche schon einige Stunden etwas sinnvolles zum Thema zu finden, aber es ist leichter gesagt, als getan.

Es geht um folgendes Thema:

Ein Systemservice startet einen Dialogmanager. Dieser Dialogmanager ist wie ein Menü zu verstehen. Der Systemservice wird so angelegt, dass er bei jeden Start, abstürzen oder Schließen den Manager wieder startet. Dadurch, dass dieser Dialogmanager aber durch einen Service gestartet worden ist, bekommt er ja die gleichen Rechte vererbt, wie auch der "Vater". Dies ist, soweit mit bekannt ist, SYSTEM. Wenn ich mich nun aber in der Software befinde, möchte ich, dass ich auch die Netzwerkdrucker sehen kann. Leider geht das nicht.
Zur Information: Wenn ich den Dialogmanager von Hand starte, geht das ohne Probleme, da er ja mit anderen Rechten gestartet wird. Ich gehe davon aus, dass SYSTEM einfach nicht das Recht hat auf die Netzwerkdrucker zuzugreifen.

Ich habe schon einiges gefunden um die Rechte richtig zu setzen. Über SDDL wäre ja die Möglichkeit zum Beispiel alles richtig zu setzen (sdset). Ich habe auch das Trustee "PO" (Printer Operators) gefunden. Aber leider findet man nirgends Informationen, was dieses PO überhaupt für einen Sinn hat. Ist es vielleicht das was ich suche? Leider kann ich im Moment noch nicht alles testen, da ich mich zuerst einmal schlau machen soll, was das nun ist usw.

Mir wurde auch gesagt, dass dies wohl aus Systemgründen nicht in XP und Abwärts möglich sei, aber Vista die Möglichkeit hätte, Netzwerkdrucker auch in meinen oben genannten Problem zu benutzen.

Ich wäre euch riesig dankbar, wenn ihr mir etwas weiter helfen kann.

Viele Grüße

Michael
 
Hallo,

also das Problem ist gelöst.

Ich bin auf einen anderen Ansatz gegangen und habe das Programm was vom Service gestartet wird, mit einem anderen User gestartet. Und zwar habe ich mir das Token um CreateProcessAsUser auszuführen mit der Funktion WTSQueryUserToken, wobei ich mir die Session als Parameter mit Hilfe von WTSEnumerateSessions herausgesucht habe, gehohlt und dann ganz einfach den Prozess erstellt. Beide Funktionen sind in der wtsapi32.dll enthalten.

Da muss man eben noch abfragen welches Betriebssystem man hat, da es erst ab XP läuft. Wenn man das hat läuft es ohne Probleme als Benutzer und jeder ist froh :D

Dieses WTSQueryUserToken ist also immer dann von Nutzen, wenn man den aktuellen Benutzer heraus suchen will, ohne dass man ihn kennen muss.

Vielleicht hab ich ja den einen oder anderen damit geholfen.

Viele Grüße

Michi
 

Neue Beiträge

Zurück