Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi prozedur/programm als Admin ausführen (https://www.delphipraxis.net/7942-prozedur-programm-als-admin-ausfuehren.html)

Illuminator-23-5 25. Aug 2003 08:34


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?

Helpliner 25. Aug 2003 10:20

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.

Christian Seehase 25. Aug 2003 11:22

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.

Illuminator-23-5 25. Aug 2003 12:09

Re: prozedur/programm als Admin ausführen
 
geht das auch nur für einzelne, programminterne prozeduren?

Assarbad 25. Aug 2003 12:16

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.

Luckie 25. Aug 2003 12:17

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.

Illuminator-23-5 25. Aug 2003 12:26

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!)

Luckie 25. Aug 2003 12:28

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.

Illuminator-23-5 25. Aug 2003 12:30

Re: prozedur/programm als Admin ausführen
 
wusst ich gar nicht!
dann hat sich das problem erledigt!
Thx!

Illuminator-23-5 25. Aug 2003 12:45

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?

Tpercon 25. Aug 2003 12:49

Re: prozedur/programm als Admin ausführen
 
System Rechte sind einfach gesagt höher.

Illuminator-23-5 25. Aug 2003 12:52

Re: prozedur/programm als Admin ausführen
 
aber da frag ich mich:
was kann der Admin nicht?

Luckie 25. Aug 2003 13:13

Re: prozedur/programm als Admin ausführen
 
Per default auf bestimmte Registry-Schlüssel zugreufen zum Beispiel.

Assarbad 25. Aug 2003 17:09

Re: prozedur/programm als Admin ausführen
 
Sagen wir es mal so, der Admin kann sich alle Rechte verschaffen, daß SYSTEM hat sie bereits.

TheMatrix 25. Aug 2003 17:28

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) ????

alcaeus 25. Aug 2003 17:29

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?

Illuminator-23-5 25. Aug 2003 17:37

Re: prozedur/programm als Admin ausführen
 
Zitat:

Wieso willst du denn was als Admin ausführen
weil bestimmte befehle bestimmte rechte brauchen,die bestimmte standard-User bestimmt nicht haben!;)

alcaeus 25. Aug 2003 17:42

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:
WinExec(PChar('Prog2.exe'),SH_SHOW);
2. Es wird nicht als Admin ausgeführt: Starte Prog2.exe auf folgende Art und Weise
Delphi-Quellcode:
WinExec('runas /user:Administrator "Prog2.exe"',SW_SHOW);
Dann müsste alles funzen.

TheMatrix 25. Aug 2003 17:50

Re: prozedur/programm als Admin ausführen
 
Zitat:

Zitat von alcaeus
Wirklich easy: du musst das Prog als System-user ausführen lassen. ...

und wie mach ich das ?

alcaeus 25. Aug 2003 17:54

Re: prozedur/programm als Admin ausführen
 
Auch easy, entweder mit runas, oder als Dienst programmieren

Assarbad 25. Aug 2003 18:07

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???

http://assarbad.net/stuff/localsystem.zip
http://e.honeker.bei.t-online.de/sources/syscmd.zip


Nachtrag:
WINEXEC ist nur aus Kompatibilitätsgründen überhaupt noch drin! NICHT MEHR BENUTZEN!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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