ich will aus meinem Service heraus ein Programm starten sobald sich einer neuer Benutzer anmeldet. Das sich ein neuer Benutzer anmeldet bekomm ich durch den ServicHandler + SERVICE_CONTROL_SESSIONCHANGE mit. Diesere neue Prozess soll die gleichen Rechte haben wie meine Service, was ja mit CreateProcess wunderbar klappen wuerde aber dann laeuft er ja au in der Session 0 was dann wieder keine GUI heisst.
Jetzt is meien Frage wie ich das Problem umgehe.
Hi,
hat keienr vielleicht einen kleinen Tipp fuer mich.
Was meine Idee gewesen waere ist:
LogonUser / CreateProcessAsUser / SetTokenInfromation zu verwenden.
1. Problem damit war das ich es nicht geschafft habe mich als LocalSystem anzumelden und
2. waere es ja wahrscheinlich ein schmarn da ja dann ne neue Session gestartet werden wuerde und ich wieder eine Notification bekommen wuerde oder?
Dupliziere deinen eigenen Token (OpenProcessToken, DuplicateTokenEx[TokenPrimary]) und setze mit SetTokenInformation[TokenSessionId] die Session auf die neue Session ID. Jetzt kannst du mit CreateProcessAsUser den Prozess als LocalSystem in der neuen Session starten.
Hoffe, ich hab da jetzt nix wichtiges vergessen ... auf allen Win-Versionen testen ist da immer oberstes Gebot
Dupliziere deinen eigenen Token (OpenProcessToken, DuplicateTokenEx[TokenPrimary]) und setze mit SetTokenInformation[TokenSessionId] die Session auf die neue Session ID. Jetzt kannst du mit CreateProcessAsUser den Prozess als LocalSystem in der neuen Session starten.
Hoffe, ich hab da jetzt nix wichtiges vergessen ... auf allen Win-Versionen testen ist da immer oberstes Gebot
lg XOR
Ich danke dir vielmals. Hat funktioniert mit Win7 x64. Werds dann au noch auf anderen Versionen testen.
Übernehme ich deinen Code, so kommt die Fehlermeldung "undefiniertes symbol PWTSSESSION_NOTIFICATION ".
Was muss ich da vorher noch deklarieren?
Bzw. wozu benötige ich das? Um die neue Session-ID zu erhalten?
Zielprozess wäre also wie im Beispiel von mir die calc.exe.
Habe deinen Code eingefügt im Ereignis OnCreate des Hauptformulares meiner zu startenden Anwendung. Funktioniert leider nicht. Anwendung wird zwar von meinem Dienst aus gestartet, aber unter Win7 erscheint nicht das Formular.
Zuletzt bearbeitet von williman am 20:06:11 02.09.2010, insgesamt 1-mal bearbeitet
Übernehme ich deinen Code, so kommt die Fehlermeldung "undefiniertes symbol PWTSSESSION_NOTIFICATION ".
Was muss ich da vorher noch deklarieren?
Bzw. wozu benötige ich das? Um die neue Session-ID zu erhalten?
williman schrieb:
Zielprozess wäre also wie im Beispiel von mir die calc.exe.
Habe deinen Code eingefügt im Ereignis OnCreate des Hauptformulares meiner zu startenden Anwendung. Funktioniert leider nicht. Anwendung wird zwar von meinem Dienst aus gestartet, aber unter Win7 erscheint nicht das Formular.
Lol und lol
zum 1.: MSDN + sollte doch aus dem Code hervor gehen!?
zum 2.: Sollte es dir nicht bewusst sein das man diesen Code in die Handler Funktion des Services eintragen soll, solltest du nochmal ueberlegen ob du wirklich was mit einenm Service machen willst (imho)
Big up
C0de4Fun
Zuletzt bearbeitet von C0de4Fun am 18:43:11 02.09.2010, insgesamt 1-mal bearbeitet
Sorry, mein letzter Beitrag bezog sich auf den Code von lowbyte!
Nicht, dass wir hier jetzt etwas durcheinander bringen!
Den Code von Lowbyte in die jeweilige exe, welche gestartet werden soll, reinzupacken, wäre meiner Meinung nach einfacher, als am Dienst etwas zu ändern.
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.