![]() |
AW: Programm von Dienst starten lassen (Jetzt aber wirklich mal)
Zitat:
Für mich wäre ja ein wünschenswerter Fortschritt, dass der Service die Anwendung nicht mit System-Rechten, sondern mit Administratorrechten des eingeloggten Benutzers startet (selbstredend ohne UAC auszulösen). Lässt sich recht leicht über den Task-Manager überprüfen. Dort sollte bei den Prozessen bei Benutzername der eingeloggte Benutzer stehen und kein leeres Feld. Wie ich gerade lese, hat Dezipaitor geschrieben, dass man über das LinkedToken an das AdminToken ja kommen würde, es aber nicht verwendbar ist. Vielleicht lässt sich ja doch irgendwie was machen? Immerhin stehen System-Rechte zur Verfügung! |
AW: Programm von Dienst starten lassen (Jetzt aber wirklich mal)
Hat jemand von euch diesen Code unter Windows 7 / 2008R2 (also je in 64bit) erfolgreich verwendet?
Ich kriege das nicht zum Laufen. Nach etwas Recherche, gibt es ein Problem, weil der Code von einem 32bit Dienst gestartet wird, man aber auf 64bit Infos zugreifen möchte. Das Problem liegt genauer beim Verwenden von "WTSQueryUserToken". Es gibt einen Blog Eintrag zu diesem Thema, das bringt mich mit meinem bisherigen Kenntnissen aber nicht weiter: ![]() Kann jemand Licht ins Dunkle bringen und hat ein Stückchen Code dazu? Zitat:
|
AW: Programm von Dienst starten lassen (Jetzt aber wirklich mal)
Zitat:
Hilft dir das weiter ?
Delphi-Quellcode:
KUBA
const
WTSQueryUserToken : function(SessionId: Cardinal; var hToken: THandle): Boolean; stdcall = nil; |
AW: Programm von Dienst starten lassen (Jetzt aber wirklich mal)
Liste der Anhänge anzeigen (Anzahl: 1)
OK,
habe ein funktionierendes Projekt angehängt, basierend auf den NT-Service von Assarbard. Programme die Administratorrechte zum Start benötigen, können mit CreateProcessElevated (von Zacherl) gestartet werden. Installation mit service1.exe /i oder /ia, deinstallation mit /u Gegenüber der JEDI Version wird hier nicht die Registry "verbogen" und das Programm läuft auch mit dem passenden Environment des Benutzers. kuba |
AW: Programm von Dienst starten lassen (Jetzt aber wirklich mal)
Ich muß diesen Thread noch mal hervorholen.
Ich habe einen Service, der Programme starten soll. Und zwar soll er die Programme unter dem Accaunt starten, unter dem er selbst angemeldet ist. Soweit erstmal läuft es. Aus dem Service bekomme ich die SECURITY_LOGON_SESSION_DATA:
Delphi-Quellcode:
Lauft der Service auf Session = 0 ist ja alles kein Problem.
PSECURITY_LOGON_SESSION_DATA = ^SECURITY_LOGON_SESSION_DATA;
_SECURITY_LOGON_SESSION_DATA = record Size : ULONG; LogonId : LUID; // LUID of the logon session. UserName : LSA_UNICODE_STRING; // Account name of the logon session. LogonDomain : LSA_UNICODE_STRING; // Domain used to authenticate the owner of session. AuthenticationPackage : LSA_UNICODE_STRING; LogonType : SECURITY_LOGON_TYPE; Session : ULONG; // A Terminal Services session identifier. Sid : PSID; // A pointer to the user's security identifier (SID). ... end; SECURITY_LOGON_SESSION_DATA = _SECURITY_LOGON_SESSION_DATA; Lauft der Service aber auf Session = 1 tritt folgendes Problem auf:
Delphi-Quellcode:
erzeugt verständlicherweise die Fehlermeldung:
...
Result := WTSQueryUserToken(WTSGetActiveConsoleSessionId, hUserToken); If not Result then Log(' => WTSQueryUserToken ERROR: ' + SysErrorMessage(GetLastError)); ...
Code:
In MSDN sthet ja auch drinnen:
=> WTSQueryUserToken ERROR: Dem Client fehlt ein erforderliches Recht
Code:
...
the calling application must be running within the context of the LocalSystem account and have the SE_TCB_NAME privilege. ... Ich suche jetzt eine Möglichkeit irgendwie anders mit den obigen Daten an hUserToken heranzukommen. Danke für die Bemühungen, Fuchtel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz