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 Programm NUR aus Delphi heraus starten (https://www.delphipraxis.net/91605-programm-nur-aus-delphi-heraus-starten.html)

diedreistendrei 7. Mai 2007 16:42


Programm NUR aus Delphi heraus starten
 
Hallo,

gibt es eine einfache Möglichkeit, ein beliebiges Programm NUR aus Delphi öffnen zu lassen? D.h. ein exe-file soll nicht geöffnet werden können, es sei denn, ein geschriebenes Delphi-Programm veranlasst dies.

Ich denke dabei an einen Passwortschutz durch ein Delphi-Programm. Natürlich soll die Zieldatei nicht ohne die Passwortabfrage aus Delphi (z.B. durch eine InputBox realisiert) geöffnet werden dürfen.

Über Hinweise würde ich mich freuen.

Danke,

Larry

Union 7. Mai 2007 17:34

Re: Programm NUR aus Delphi heraus starten
 
Realisiere das doch über ein Memory Mapped File.

SirThornberry 7. Mai 2007 17:53

Re: Programm NUR aus Delphi heraus starten
 
es gibt einige Varianten. Zum einen kannst du in der Projektdatei prüfen ob die Anwendung mit bestimmten Parametern gestartet wurde (Diese Parameter müsste dann deine Passwortabfrage übergeben).
Eine weitere Variante wäre das du Application.Run etc. aus der Projektdatei entfernst, die Exe-Datei mit LoadLibrary lädst und eine exportierte Funktion aufrufst (dann ist es jedoch leichter gleich eine DLL zu nutzen).
Oder du prüfst in deinem Programm welches gestartet wird ob die Owner-Process-ID dein bestimmtes Delphiprogramm ist.
dann gibt es eben noch solche Varianten das du irgendwo ein "ja ich darf starten" ablegst (zum Beispiel in MemoryMappedFiles etc.).
Noch eine weitere Variante wäre das dein Programm welches gestartet werden soll nach dem Start das Starterprogramm sucht, diesem eine Message schickt und das Starterprogramm dann sagt ob es wirklich der Starter war oder eben nicht.

Du siehst das du die Qual der Wahl hast so viele Varianten gibt es.

himitsu 7. Mai 2007 18:36

Re: Programm NUR aus Delphi heraus starten
 
Wenn es sich nur um ein bestimmtes Programm handelt, welches das Starten veranlassen darf, dann bietet sich die Variante mit der Owner-Process-ID wohl besser an, wobei man da noch das zugehörige Programm analysieren sollte (z.B. über 'nen Hash und Ähnlichem prüfen, ob es wirklich das passende Programm ist).

Denn alles Andere kann man auch mit Nicht-Delphi-Programmen, oder auch einer "Fälschung" in Delphi nachmachen. :zwinker:

diedreistendrei 7. Mai 2007 20:44

Re: Programm NUR aus Delphi heraus starten
 
Hallo,

danke für eure Hinweise.

Wahrscheinlich habe ich mich etwas missverständlich ausgedrückt. Ich möchte eine beliebige Datei aus meinem Delphi-Programm öffnen, also z.B. irgendeine exe-Datei (dies soll kein Delphi-Programm sein). Klappt das mit den Memory Mapped Files? Ist das auch relativ einfach zu verstehen?

Danke für eure Hilfe, Gruß,

Larry

SirThornberry 7. Mai 2007 20:49

Re: Programm NUR aus Delphi heraus starten
 
wenn du einfach nur ein Programm starten willst schau dir mal ShellExecute oder CreateProcess an.

Matze 7. Mai 2007 20:57

Re: Programm NUR aus Delphi heraus starten
 
Ich übersetze mal, was diedreistendrei (btw: geile Serie) möchte ;)

Er möchte bestimmte Anwendungen (Bsp: Notepad.exe, winword.exe, ...) mit einem Passwortschutz versehen, damit sich diese Programme nicht mehr über den Explorer und ähnlichem öffnen lassen. Diese geschützten Programme sollen nur dann starten, wenn diese über sein selbst geschriebenes Programm aufgerufen werden, was nach dem Passwort verlangt und bei korrekter Eingabe die entsprechende Exe (Bsp: Notepad.exe) startet. Ansonsten sollen die Anwendungen nicht gestartet werden können.

So habe ich seine Frage verstanden, nur wie man das umsetzen kann oder eigenes Dateisystem oder sowas in der Art, weiß ich nicht.

Zacherl 7. Mai 2007 22:02

Re: Programm NUR aus Delphi heraus starten
 
Ich würde die zu schützenden EXE Dateien verschlüsseln und erst nach Eingabe des korrekten PWs wieder entschlüsseln und ausführen. Das Ganze am besten nach Nicos InMemExe Beispiel um zu verhindern, dass man sich die unverschlüsselte EXE kopieren kann.

diedreistendrei 8. Mai 2007 08:26

Re: Programm NUR aus Delphi heraus starten
 
Hi,

danke Matze für deine "Übersetzung". Genau so soll es sein. Gibt's da 'ne einfache Lösung...?

Larry

SirThornberry 8. Mai 2007 09:13

Re: Programm NUR aus Delphi heraus starten
 
die einfachste Lösung wäre die Verwendung von NTFS und das ausführen/lesen der Exe nur einem bestimmten Nutzer zu gestatten. Dein Programm macht dann nichts anderes als das Programm unter diesem bestimmten Nutzer auszuführen.
Die kompliziertere Lösung wäre wohl ein Api-Hook in dem die Funktionen zum ausführen von Programmen gesperrt werden.

Mir bleibt nur der Sinn des ganzen verborgen. Möchte ein Nutzer das ein bestimmtes Programm nicht gestartet wird so startet er es eben einfach nicht bzw. setzt im Windows die Rechte entsprechend.
Was hast du also vor?


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