Die eigene .exe Datei manipulieren
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Die eigene .exe Datei manipulieren
Hi!
Dazu eine kleine Hilfe:
Nimm den Explorer und den Total Commander.
Und dann sieh Dir in beiden Laufwerk C:\ an.
Dann siehst Du, wie der Explorer eine Übersetzung vorlügt.
Im Explorer heisst es C:\Benutzer
Im Total Commander heisst es korrekt C:\users
Was lernen wir schon wieder:
Nie Microsoft vertrauen.
Winni
Dazu eine kleine Hilfe:
Nimm den Explorer und den Total Commander.
Und dann sieh Dir in beiden Laufwerk C:\ an.
Dann siehst Du, wie der Explorer eine Übersetzung vorlügt.
Im Explorer heisst es C:\Benutzer
Im Total Commander heisst es korrekt C:\users
Was lernen wir schon wieder:
Nie Microsoft vertrauen.
Winni
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Die eigene .exe Datei manipulieren
Genau: vertraue keinem Ordner den Du nicht selbst angelegt hast
Durch die Spielerei mit der Funktion GetAppConfigDir
habe ich doch glatt noch einen Fehler gefunden in meiner Software:
Die Funktion benötigt bei meinem Windows knapp 100 Millisekunden
und da kommen schon Meßwerte von meinem Gerät die verarbeitet werden sollten....
der Kurvenspeicher ist aber anscheinend noch garnicht aufgebaut/reserviert.
Das muss ich jetzt mal genauer untersuchen....
Also war die ganze Diskussion in jeder Hinsicht sehr wertvoll für mich.

Durch die Spielerei mit der Funktion GetAppConfigDir
habe ich doch glatt noch einen Fehler gefunden in meiner Software:
Die Funktion benötigt bei meinem Windows knapp 100 Millisekunden
und da kommen schon Meßwerte von meinem Gerät die verarbeitet werden sollten....
der Kurvenspeicher ist aber anscheinend noch garnicht aufgebaut/reserviert.
Das muss ich jetzt mal genauer untersuchen....
Also war die ganze Diskussion in jeder Hinsicht sehr wertvoll für mich.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Die eigene .exe Datei manipulieren
Es gibt API calls, die den Ordner für Konfigurations-Dateien anzeigen.
Vor einigen Jahren habe ich mal eine INI-Komponente damit gemacht.
(In Windows) sind es übrigens drei Möglichkeiten, die man zur Konfiguration nutzen Kann:
- generelle für das Programm (bei der Installation vom Administrator zu verwalten)
- für alle User (von jedem User setzbar und lesbar)
- für den aktuellen User (nur von diesem setzbar und lesbar)
Kann man alles durchaus sinnvoll anwenden.
-Michael
Zuletzt geändert von mschnell am Di 6. Apr 2021, 10:50, insgesamt 1-mal geändert.
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Die eigene .exe Datei manipulieren
Gibt da dann auch noch drei Stufen:mschnell hat geschrieben: Do 1. Apr 2021, 11:21 - für den aktuellen User (nir von diesem setzbar und lesbar)
- Roaming
- Local
- LocalLow
FPC Compiler Entwickler
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Die eigene .exe Datei manipulieren
Und bei Linux ? ...
-Michael
-Michael
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Die eigene .exe Datei manipulieren
$HOME/.config
Bzw. für Userübergreifende Konfiguration /etc. Die Free Pascal Funktionen nutzen hier nach Möglichkeit den FreeDesktop-Standard.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 130
- Registriert: Di 26. Jul 2011, 19:58
- OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
- CPU-Target: 64Bit
Re: Die eigene .exe Datei manipulieren
Hallo,
das habe ich einmal erfolgreich geschafft.
Allerdings in Delphi unter Windows und das ist schon lange her.
Damals hatte ich nur unter WINDOWS gearbeitet und heute nur noch unter Linux.
Wenn ich mich richtig erinnere, hatte ich die Daten als Typisierte Konstanten abgelegt.
Die erste Konstante war eine eindeutige Zeichenkette. Dann folgte der Rest.
Die exe habe ich dann als normale Datei geöffnet und nach der eindeutigen Zeichenkette gesucht. Damit hatte ich den Anfang des Datenblocks.
Über die Adresse der Zeichenkette und die Adresse der zu ändernden Constante erhälst Du den Offset zum Anfang des Datenblocks. Auf der Adresse habe ich dann den Wert geschrieben und die Datei gespeichert.
Die Werte wurden dann nach dem Neustart ordentlich benutzt.
Ob das heute noch funktioniert kann ich nicht garantieren. Der Aufwand war mir zu hoch.
Heute verwende ich einen Record, in dem alle interessanten Werte in dem Format vorhanden sind, wie ich sie im Programm benötige. Beim Programmstart wird der Record einmal aus der INI eingelesen und ist sofort verwendbar. Die Bearbeitung wird im Programm erledigt und anschließend gespeichert. Da kann man alle Werte auf Plausibilität prüfen und kein Spielmatz kann einfach mal mit einem Editor irgendwelchen Unfug reinschreiben.
das habe ich einmal erfolgreich geschafft.
Allerdings in Delphi unter Windows und das ist schon lange her.
Damals hatte ich nur unter WINDOWS gearbeitet und heute nur noch unter Linux.
Wenn ich mich richtig erinnere, hatte ich die Daten als Typisierte Konstanten abgelegt.
Die erste Konstante war eine eindeutige Zeichenkette. Dann folgte der Rest.
Die exe habe ich dann als normale Datei geöffnet und nach der eindeutigen Zeichenkette gesucht. Damit hatte ich den Anfang des Datenblocks.
Über die Adresse der Zeichenkette und die Adresse der zu ändernden Constante erhälst Du den Offset zum Anfang des Datenblocks. Auf der Adresse habe ich dann den Wert geschrieben und die Datei gespeichert.
Die Werte wurden dann nach dem Neustart ordentlich benutzt.
Ob das heute noch funktioniert kann ich nicht garantieren. Der Aufwand war mir zu hoch.
Heute verwende ich einen Record, in dem alle interessanten Werte in dem Format vorhanden sind, wie ich sie im Programm benötige. Beim Programmstart wird der Record einmal aus der INI eingelesen und ist sofort verwendbar. Die Bearbeitung wird im Programm erledigt und anschließend gespeichert. Da kann man alle Werte auf Plausibilität prüfen und kein Spielmatz kann einfach mal mit einem Editor irgendwelchen Unfug reinschreiben.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Die eigene .exe Datei manipulieren
Für systemweite Dateien:
Code: Alles auswählen
/etc
Code: Alles auswählen
/home/[user]/.config
Hier verewigt sich zB der Jedi Formatter.
Und die Konfigurations-Datei von LazPaint findet man auch.
Winni
Re: Die eigene .exe Datei manipulieren
Falls es sich wirklich um eine .exe handelt, hab ich genau diese Idee schon gehabt und spaeter auch voll ausprogrammiert.
Das Verfahren an sich funktioniert, ist aber etwas tricky...
Ob ich das Projekt noch irgendwo hab muesste ich mal schauen...
Der Trick dabei ist, dass die .exe sich selbst nochmal aufruft (aber im Arbeitsspeicher).
Somit gibt Windows die Datei frei und ist somit wieder frei verfuegbar.
Anschliesend werden die gewuenschten Werte in die Ressourcen der Datei geschrieben bzw. beim Start auch wieder ausgelesen.
Verliert man aber die .exe - sind die Daten natuerlich auch weg...
Das Verfahren an sich funktioniert, ist aber etwas tricky...
Ob ich das Projekt noch irgendwo hab muesste ich mal schauen...
Der Trick dabei ist, dass die .exe sich selbst nochmal aufruft (aber im Arbeitsspeicher).
Somit gibt Windows die Datei frei und ist somit wieder frei verfuegbar.
Anschliesend werden die gewuenschten Werte in die Ressourcen der Datei geschrieben bzw. beim Start auch wieder ausgelesen.
Verliert man aber die .exe - sind die Daten natuerlich auch weg...
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Die eigene .exe Datei manipulieren
Dafür wird die exe gerne von AV-Scannern kassiert und das ganze geht auch nicht, wenn die Datei ordnungsgemäß unter Windows installiert wurde. Dann ist sie R/O.Snify hat geschrieben: Mi 28. Jul 2021, 13:17 Das Verfahren an sich funktioniert, ist aber etwas tricky...
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).