| Autor |
Beitrag |
Delphi2009lover
      
Beiträge: 176
|
Verfasst: Di 25.08.09 14:20
Hallo,
ich hab eine sehr komplizierte Frage (eigentlich 2)
1. Wie bekomm ich eine .exe in eine Resourcendatei (wie erstelle ich eine Resourcendatei) und wie bekomm ich die dann in mein Programm
2. Wie kann ich dann aus den Resourcen die Anwendung starten?
Ich bin voll der Noob und hab zwar viel Ahnung in VB.NET aber das hilft mir hier leider nix^^
Also bitte verständlich erklären bitte^^
Danke schon mal im Vorraus
|
|
Biarchiv
      
Beiträge: 688
|
Verfasst: Di 25.08.09 14:25
Hallo,
wenn du ein Programm braucht der mehrere EXE binden und starten kann, dann teste mal EXE Bundle.
www.webtoolmaster.com
Sonst ist das für einen Anfänger etwas schwer.
|
|
Delphi2009lover 
      
Beiträge: 176
|
Verfasst: Di 25.08.09 14:40
Nein ich will ein Programm schreiben das eine andere *.exe included hat^^ aber sie soll von meinem Programm nur geöffnet werden wenn das Passwort, dass der User eingibt korrekt ist.
|
|
Sinspin
      
Beiträge: 1340
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Di 25.08.09 15:10
Mal von der Technik abgesehen und dem Problem das dir Vierenscanner machen dürften, ich würde mir dem komplizierten Umweg über Ressourcen sparen und die Exe einfach an die andere hinten anhängen. Das ist ganz einfach und du kommst auch ohne Probleme an die Daten (Exe) wieder ran.
Als Technik zum ausführen der im RAM liegenden Exe schau mal hier im Forum nach uallCollection. Damit kann man unter anderem in den RAM geladene Anwendungen starten.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Delphi2009lover 
      
Beiträge: 176
|
Verfasst: Di 25.08.09 15:34
das Problem ist, dass wenn ich das Programm im ProgrammOrdner hab dass man dann das Programm auch ohne Passwort laden kann
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 25.08.09 15:37
sinspin meint nicht im programmordner. sondern das du einfach die bytefolge die dein programm zum programm machst, mehr oder weniger mittels Copy and Paste an dein "Passwortprogramm" anfügst. und dann brauchst du es nur mehr "aus" deinem Programm in den Ram laden und mit der uallCollection starten.  das programm wird demnach nie als eigene Exe auf der festplatte gespeichert.
Ob da die Virenscanner jedoch mitmachen bleibt mal so dahingestellt.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Di 25.08.09 15:44
Verschlüssel die andere exe doch einfach mit einem sicherem Verfahren, und lege sie in den Programmordner.
Das dürfte doch das einfachste sein, alles andere wird leicht zu kancken sein.
|
|
Delphi2009lover 
      
Beiträge: 176
|
Verfasst: Di 25.08.09 15:50
wie schon geschrieben ich bin ein Noob...
in VB währ das ja voll einfach gewesen
Delphi
Die exe hätte ich so hinzugefügt: *.exe RC_DATA
aber KA ob des auch so geht^^
|
|
Sinspin
      
Beiträge: 1340
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Di 25.08.09 16:57
Die RC_DATA Methode ist aber viel zu umständlich und vorallem unflexibel, du musst jedesmal die Passwort Exe neu erstellen wenn sich die eingebettete ändert.
Beim anhängen brauchst du nur mit einem Ladeprogramm die neue Exe hinten an eine "leere" Version deines Passwortschutzes anhängen.
Das Ladeprogramm funktioniert ganz einfach : (Pseudcode)
- nimm dir zwei variablen von typ TStream. PassFile, EmbededFile
- öffne mit PassFile dein Passwortschutzprogramm (an dem noch nichts hinten dran hängt)
- gehe an das ende der Datei (du willst sie ja nicht überschreiben)
- öffne mit EmbededFile die Datei die du hinten dran haben willst
- schreibe die datei (EmbededFile) nun in PassFile
- schreibe zusätzlich die an das ende von PssFile als integer die größe von EmbededFile (wenn du das nicht machst kann du die datei nicht mehr auslesen und in den RAM laden)
- schließe die beiden Dateien.
In deinem Passwortschutz ist es dann genauso einfach. Da braucht sich dann nur die laufende Exe selber öffnen (nur lesend, sonst wird es nichts), Am Ende von sich selber nachsehen wie viele Bytes gelesen werden sollen, an die richtige Stelle positionieren (die vier byte für den integer ganz am ende nicht vergessen) und die Exe in einen Puffer im Speicher laden.
Den genauen uallCollection Aufruf mus ich erstmal nachschlagen, aber komm erstmal so weit. 
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Di 25.08.09 17:12
Warum schreibst du die 2. Exe nicht einfach so das sie vor dem Start ein Parameter erwartet nämlich das passwort? Dann kannst du sie auch einfach in den selben Ordner legen.
Davon abgesehn wird der Viren scanner Alarm schlagen wenn eine Exe in der Exe verpackt ist.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 25.08.09 17:38
Was den Zugriff auf an die Exe angehängte Daten angeht, da gibts mein Exe Data Stream Projekt:
www.delphi-forum.de/viewtopic.php?t=89659
Damit kann man da einfach wie mit einem normalen TStream zugreifen.
// EDIT:
thepaine91 hat folgendes geschrieben : | | Warum schreibst du die 2. Exe nicht einfach so das sie vor dem Start ein Parameter erwartet nämlich das passwort? Dann kannst du sie auch einfach in den selben Ordner legen. |
Naja, aber man sieht dann ja selbst ohne irgendwelche besonderen Kenntnisse und ab Vista auch ohne Zusatzsoftware sofort das Passwort und kann es selbst übergeben. 
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Di 25.08.09 18:20
|
|
Delphi2009lover 
      
Beiträge: 176
|
Verfasst: Mi 26.08.09 15:17
Leute es tut mir echt leid ihr seid echt super aber ich versteh nur Bahnhof^^ ich wollte das Programm für einen Freund schreiben^^
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 26.08.09 15:25
Was spricht denn gegen die einfache Lösung, die exe einfach Passwortverschlüsselt mitzuliefern?
|
|
Delphi2009lover 
      
Beiträge: 176
|
Verfasst: Do 27.08.09 15:58
Ich hab mich jetzt mal informiert xD
meine Ressis.rc sieht so aus:
Quelltext 1:
| MYPROGGI EXEFILE F:/Reso/AlphaB.exe |
dann habe ich Ausgeführt:
BRC32 -r F:/Reso/Ressis.rc
und hatte dann meine Ressis.res
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function ExtractRes(ResType, ResName, ResNewName: string): Boolean; var Res: TResourceStream; begin Result := False; Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType)); try Res.SavetoFile(ResNewName); Result := True; finally Res.Free; end; end; |
das ist die Funktion, die meine exe aus dem Programm extrahieren sollte
den Code benutze ich zum Aufrufen:
Delphi-Quelltext 1:
| ExtractRes('EXEFILE', 'MYPROGGI', 'C:/Users/---/Desktop/AlphaB.exe'); |
Als Fehler kommt dann : "Resource MYPROGGI konnte nicht gefunden werden"
ist auch mit {$R Ressis.res} eingebunden
|
|
Delphi2009lover 
      
Beiträge: 176
|
Verfasst: Do 27.08.09 16:04
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Do 27.08.09 16:05
|
|