Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Service-Programm unter anderem Benutzer laufen lassen (https://www.delphipraxis.net/77695-service-programm-unter-anderem-benutzer-laufen-lassen.html)

n0b0dy 23. Sep 2006 12:52


Service-Programm unter anderem Benutzer laufen lassen
 
hi,

man kann ja in Windows generell Dienste auch unter anderen Benutzern laufen lassen, als unter dem System-Benutzer.
Mich würde nun interessieren wie meinen schon laufenden Dienst praktisch "ummelden" kann. Also dem Dienst wird ein User und Passwort zugespielt, und dieser sollte Stoppen, und dann wieder unter dem Anderen Benutzer starten (weil ohne Unterbrechung wird das ja kaum gehen). Habe hier im Forum leider nichts passendes gefunden. Kann mir jemand helfen?


Grüße

marabu 23. Sep 2006 13:13

Re: Service-Programm unter anderem Benutzer laufen lassen
 
Hallo,

Zitat:

Zitat von n0b0dy
Also dem Dienst wird ein User und Passwort zugespielt, und dieser sollte Stoppen, und dann wieder unter dem Anderen Benutzer starten (weil ohne Unterbrechung wird das ja kaum gehen).

nicht dein Dienst erledigt das, sondern der Service Control Manager. Wenn du schon einen Dienst implementiert hast, dann kennst du die API Calls, die du brauchst um dir ein Handle zu besorgen und den Dienst zu starten und zu stoppen. Zusäzlich musst du dir ChangeServiceConfig() ansehen. Diesem call kannst du den Namen des Kontos und ein Password übergeben, welches der SCM in seine Datenbank einträgt. Wenn du nur vorübergehend umschalten willst, dann wird es haarig, da du mit QueryServiceConfig() nur den account name ermitteln kannst. Grundsätzlich kann ich mir kaum einen Grund vorstellen, warum du überhaupt den account name wechseln müsstest. Im Prinzip gibt man dem Dienst einen der üblichen system accounts und gut ist.

Grüße vom marabu

n0b0dy 23. Sep 2006 13:28

Re: Service-Programm unter anderem Benutzer laufen lassen
 
Ja WOLLEN tu ich das nicht so direkt^^
Es ist halt so, dass das ein Webserver gibt, der als Dienst laufen soll und unter Anderem andere Programme starten soll, oder einige anderen Dinge erledigen soll, wo ich Administrator-Rechte benötige. Das mit den zu startenden Programmen kann ich ja noch umgehen, indem ich das Programm dann unter dem anderen User starte, also sowas wie RunAs. Oder wenn ich Netzwerksachen machen will, wo der Dienst auf andere Rechner zugreifen soll, auf denen man Administrator-Rechte braucht. Hab kA wie das gehen soll, wenn das unter System-Rechten läuft.

Ich bin mir ja auch noch nicht so sicher, wie das alles funktionierne soll. :?

n0b0dy 25. Sep 2006 16:10

Re: Service-Programm unter anderem Benutzer laufen lassen
 
erstma *push*

und dann:^^
so nun hat sich schon das erste Problem ergeben. Da das Programm ein Dienst ist, und unter Systemrechten läuft, funktioniert irgenwdie meine Screenshot funktion nicht mehr. Das Bild bleibt einfach weiß.Die Screenshot funktion ähnelt der von sakura (hier) sehr.
Wie schaff ich das nun, dass ich gewisse Dinge, unter einem anderen benutzer durchführen kann?


Grüße


[EDIT]
ich glaube das ganze hat sich mal wieder durch diesen Thread erledigt :), odeR? Ich werde sofort testen :D

Trotzdem danke. Aber manches findet man halt erst, wenn man eigentlich schon wieder nach was anderem sucht ;)



[EDIT#2]
oje. ich habe so die befürchtung, dass das mit einem Dienst nicht klappt :((
Jedenfalls bemerke ich bei mir keine Veränderungen (bsp: Screenshot). Demo von Luckie funzt.

Luckie 25. Sep 2006 17:52

Re: Service-Programm unter anderem Benutzer laufen lassen
 
Man sollte sich auch mal mit der Materie vertraut machen und nicht so einfach drauflos programmieren. Siehe hier: http://www.michael-puff.de/Developer...Stations.shtml Der Dienst lauft in einer anderen WindowsStation auf einem anderen Desktop.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz