![]() |
prozedur/programm als Admin ausführen
kann ich unter Win2K ein Programm unter einem anderen User ausführen?
z.B. wenn ich als normaler User angemeldet bin und ein Programm aufmache. Dieses Programm öffnet ein Anderes Programm, das aber unter dem Benutzer 'Administrator' ausgeführt wird? z.B. dass ich Schreibe: function ProgrammAusführenAls(Pfad, Benutzer, Passwort: string): boolean; Als rückgabewert kommt dann zurück, obs geklappt hat, oder nicht Geht das oder ist das unmöglich? |
Re: prozedur/programm als Admin ausführen
Hi Illuminator,
also über die Konsole geht das Problemlos per "runas /user:Benutzername Programmname", wie man dieses jetzt in Delphi abwickelt kann ich dir leider nicht sagen, aber hier gibt es ja genug Leute die sowas können. |
Re: prozedur/programm als Admin ausführen
Moin Zusammen,
das Kernstück dafür ist die API CreateProcessAsUser. Die genaue Anwendung hab' ich jetzt leider nicht zur Hand. |
Re: prozedur/programm als Admin ausführen
geht das auch nur für einzelne, programminterne prozeduren?
|
Re: prozedur/programm als Admin ausführen
Jain.
Die o.g. API benötigt den RUNAS-Service. Das hat seinen Grund. Um nämlich mit Tokens zu spielen, mußt du das TCB-Privileg (Trusted Computing Base) haben ... das hat der Admin normalerweise nicht, aber SYSTEM schon. Services laufen allgemein unter SYSTEM. Du müßtest also einen Service schreiben oder das Programm irgendwie anders an die Privilegien ein primäres Token zu erzeugen und zur TCB zu gehören rankommen lassen. Dann kannst du über LogonUser und Impersonation deinen Thread im Kontext eines beliebigen Benutzers laufen lassen, insofern du seine Credentials (username password) kennst. |
Re: prozedur/programm als Admin ausführen
Nein. Damit kannst du nur ganze Prozesse unter einem anderen Bneutzerkontext ausführen. Du mußt allerdings dessen Login und Passwort kennen.
|
Re: prozedur/programm als Admin ausführen
Kann sich das Prog auch selbst Unter einem Anderen User ausführen, denn das Problem ist folgendes:
ich versuch, ein Programm zu machen, das dann in die Windows-Dienste kommen soll. Dieses Programm enthält einige Funktionen, die aber Admin-Rechte brauchen, um ausgeführt werden zu können. Muss ich da dann eine eigene Exe machen, die dann in den Diensten ist und dann das eigentliche Programm dann mit Adminrechten ausführt oder kann sich das Programm selbst diese Rechte irgendwie geben (natürlich unter der Voraussetzung, dass ich das pw kenne!) |
Re: prozedur/programm als Admin ausführen
Wenn es als Dienst läuft, hat es sowieso Admin-, wenn nicht sogar System-Rechte. Dientse installieren und starten kann aber auch nur wiederrum ein Admin oder ein Benutzer mit entsprechenden Rechten.
|
Re: prozedur/programm als Admin ausführen
wusst ich gar nicht!
dann hat sich das problem erledigt! Thx! |
Re: prozedur/programm als Admin ausführen
trotzdem noch 'ne frage:
ich hab gefunden, wie ich herausbekomme, ob ich Adminrechte habe oder nicht, gibts das für 'system-rechte', oder kann ich davon ausgehen, wenn ich nicht Adminrechte hab, dass ich 'system-rechte' hab? Worin liegt eigentlich der unterschied zwischen Admin- und systemrechte? |
Re: prozedur/programm als Admin ausführen
System Rechte sind einfach gesagt höher.
|
Re: prozedur/programm als Admin ausführen
aber da frag ich mich:
was kann der Admin nicht? |
Re: prozedur/programm als Admin ausführen
Per default auf bestimmte Registry-Schlüssel zugreufen zum Beispiel.
|
Re: prozedur/programm als Admin ausführen
Sagen wir es mal so, der Admin kann sich alle Rechte verschaffen, daß SYSTEM hat sie bereits.
|
Re: prozedur/programm als Admin ausführen
mal ne ganz doofe frage nebenbei, wie kann ich innerhalb eines Delphi prgs SYSTEM Rechte bekommen (ohne dabei einen Service Dienst schreiben zu müssen) ????
|
Re: prozedur/programm als Admin ausführen
Wirklich easy: du musst das Prog als System-user ausführen lassen. Sobald es unter einem "normalen" Benutzerkonto läuft, ist schluss mit vielen Rechten.
@Illu: Wieso willst du denn was als Admin ausführen? Soll der Benutzer nach dem Admin-Kennwort gefragt werden? |
Re: prozedur/programm als Admin ausführen
Zitat:
|
Re: prozedur/programm als Admin ausführen
Die zweite Frage ist noch nicht beantwortet, denn falls der User das Passwort auch eingeben soll, kannst du es auf folgende Art&Weise lösen.
Prog1.exe wird vom User aufgerufen und überprüft ob es als Admin ausgeführt wird (Umgebungsvarieblen). Nun gibt es 2 Fälle: 1. Es wird als Admin ausgeführt: Prog2.exe wird gestartet
Delphi-Quellcode:
2. Es wird nicht als Admin ausgeführt: Starte Prog2.exe auf folgende Art und Weise
WinExec(PChar('Prog2.exe'),SH_SHOW);
Delphi-Quellcode:
Dann müsste alles funzen.
WinExec('runas /user:Administrator "Prog2.exe"',SW_SHOW);
|
Re: prozedur/programm als Admin ausführen
Zitat:
|
Re: prozedur/programm als Admin ausführen
Auch easy, entweder mit runas, oder als Dienst programmieren
|
Re: prozedur/programm als Admin ausführen
Wenn du keinen Exploit gefunden hast, den du ausnutzen kannst und wenn du keine Debug-Privs hast (was SYSTEM oder Admin gleichkommt), und wenn dann dein System gepatcht ist, dann vergiß es.
SYSTEM ist das höchste auf dem lokalen Rechner. Wenn du das weißt, findest du deine Frage dann noch logisch? Wenn jeder Popel sich jedes Recht verschaffen kann, wozu dann überhaupt Sicherheit??? ![]() ![]() Nachtrag: WINEXEC ist nur aus Kompatibilitätsgründen überhaupt noch drin! NICHT MEHR BENUTZEN!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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