Dateien IN der .exe öffnen
-
Hallo,
ist mein erster Beitrag hier. Ich hoffe das ich überhaupt in der richtigen Kategorie angelangt bin.Ich würde gerne wissen, wie ich eine beliebige Datei (zum Beispiel eine .txt-Datei), welche IN einer .exe ist öffnen kann. Soweit ich nun mit recherchieren bin, ist die Standardbibliothek dafür nicht zu gebrauchen. Also stellt sich nun für mich die Frage, welche Bibliothek ich dafür nehmen kann und wie diese einzubetten ist, da ich mir bisher nur selbst eine kleine .dll geschrieben, jedoch die Bibliotheken die ich mir bisjetzt angeguckt habe sind voll mit allen möglichen Dateien.
Ich möchte also, das man Programm sich selbst als Archiv öffnet und dort Daten abruft. Die bisherige Dateihierarchie in einer meiner anderen Programme (mit Windows Forms) sieht so aus:
.rsrc
--> 1031
----> GROUP_ICON
------> 1
----> ICON
------> 1
--> 1033
----> MANIFEST
------> 1
.text
.rdata
.relocHeißt also, ich verschiebe dort z.B. eine beispiel.txt hinein, und mein Programm wertet den Inhalt dieser Datei dann aus.
Danke für eure Hilfe!
-
speicher den text einfache in einer variable ab.
feddisch ist die kiste.
-
okay schrieb:
speicher den text einfache in einer variable ab.
feddisch ist die kiste.Danke für deine Antwort, aber mein Ziel ist es dass man den Ablauf / die Daten des Programmes verändern kann, ohne es neu zu kompilieren!
(Und mit einer exteren Datei habe ich das auch schon gemacht. Jedoch ist das für mein momentanes Projekt nicht möglich, da ich nur eine .exe haben will ohne andere exterene Dataien)
-
was du vorhast ist unnötig kompliziert.
du musst den offset kennen, wo sich der anfang deiner daten in der exe befindet. du kannst dort aber nicht einfach irgendwelche textdateien reinschieben, sondern du müsstest die größe der exe selbst kontrollieren und anpassen.
allerdings düfte das betriebssystem streiken(schätze ich mal, habs noch nicht probiert) wenn du ein programm verändern willst, das gerade ausgeführt wird.
daher müsstest du wohl irgendwie einen separaten prozess starten mit den erforderlichen rechten, der deine exe öffnet und bearbeitet. alles in allem viel zu umständlich.
was spricht gegen eine separate datei für die daten?
-
Guck mal unter FindResource / LoadResource / LockResource / UpdateResource etc. im MSDN nach.
Kurzes Beispiel hier.
-
dassja geil!
wieda was gelernert!
-
Eigentlich möchte ich garnicht die .exe während dem Ausführen verändern, sondern nur Lesen. Das Verändern würde ich so oder so machen wenn die .exe nicht ausgeführt wird.
Danke für den MSDN-Link, werde mal schauen ob dort die Lösung für mein Problem verborgen liegt.
(Habe vorher noch nie von Handles etc. gehört, also erstmal informieren gehen)
Falls du noch nen Shortcut für mich hast, damit ich das ganze schneller hinbekomme währe das auch sehr hilfreich.
-
die exe lesen ist nicht sooo das problem, man muss nur beachten dass auch nullbytes enthalten sein können und es daher probleme mit gängigen stringfunktionen geben kann.
-
okay schrieb:
die exe lesen ist nicht sooo das problem, man muss nur beachten dass auch nullbytes enthalten sein können und es daher probleme mit gängigen stringfunktionen geben kann.
Okay, das ist super, aber meine Frage ist ja: Wie genau mache ich das? Einfach einen ifstream zu erstellen für die .exe funktioniert ja wohl kaum.
-
ifstream, keine ahnung , ich mache sowas lieber mit c.
-
okay schrieb:
die exe lesen ist nicht sooo das problem, man muss nur beachten dass auch nullbytes enthalten sein können und es daher probleme mit gängigen stringfunktionen geben kann.
std::string hat keine Probleme mit '\0'.
P.S. Der Thread ist sehr suspekt.
-
out schrieb:
okay schrieb:
die exe lesen ist nicht sooo das problem, man muss nur beachten dass auch nullbytes enthalten sein können und es daher probleme mit gängigen stringfunktionen geben kann.
std::string hat keine Probleme mit '\0'.
dann findet es auch text zwischen nullbytes, dann ja alles in butter ist.
out schrieb:
P.S. Der Thread ist sehr suspekt.
lol
-
Vor allem ist dieser Thread im falschen Forum. Das gehört ziemlich eindeutig ins WinAPI Forum.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
[quote="holzlag0r"]
okay schrieb:
Danke für deine Antwort, aber mein Ziel ist es dass man den Ablauf / die Daten des Programmes verändern kann, ohne es neu zu kompilieren!
Das verstehe ich nicht ganz: Solange die exe-Datei unverändert bleibt, wird sie doch auch immer dasselbe tun?!
-
das ist alles irgendwie sehr schwammig. was möchtest du denn überhaupt erreichen?