![]() |
"Automatischen" Zugriff auf die Registry unterbinden?
Hallo,
ich habe eine Anwendung in einem sicheren Umfeld, in dem jeder Zugriff aufs System gerechtfertigt sein muss. Nun greift mein Delphi-Programm ohne mein Zutun auf die folgenden Registry-Keys zu: HKCU\Software\CodeGear\Locales HKCU\Software\Borland\Locales HKCU\Software\Embarcadero\Locales HKCU\Software\Borland\Delphi\Locales Der Grund ist mir schon klar. Ich suche nach einem Weg, dies zu unterbinden (Multi-Lang-Unterstützung ist nicht nötig). In den Projektoptionen habe ich dazu nichts gefunden, Google schweigt, und selbst wenn ich meine Executable im Hex-Editor ansehe sind diese Schlüssel zumindest nicht im Klartext eingebunden. Habt ihr eine Idee? LG |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Wenn Du sie unterbinden willst, kannst Du die entsprechenden WinAPI-Funktionen hooken. Aber ich würde dort erstmal einen Breakpoint setzen und schauen, woher die Aufrufe überhaupt kommen. |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Die Schlüssel sind im Klartext im Kompilat zu finden, wenn man in Unicode (UTF-16) danach sucht. Hier mal ein Beispiel eines mit XE2 kompilierten Konsolenprogramms:
Code:
Selbst bei alten Kompilaten aus Delphi 5 finden sich die beiden Borland-Schlüssel, dort natürlich als ANSI/ASCII.
Software\Embarcadero\Locales
Software\CodeGear\Locales Software\Borland\Locales Software\Borland\Delphi\Locales Definiert sind die Schlüssel in der System.pas, zugewiesen an verschiedene Variablen. Verwendet werden die Variablen in
Delphi-Quellcode:
und dann
function InternalGetLocaleOverride
Delphi-Quellcode:
. Weiter folgen kannst du dem Code sicherlich selbst. Da die System.pas aber soweit ich weiß immer implizit mit eingebunden wird, sehe ich kaum Chancen, den Zugriff auf die Schlüssel zu unterbinden - außer vielleicht durch Ausnullen der Schlüssel im Kompilat.
function GetLocaleOverride
Grüße Dalai |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Danke erstmal :)
Auch in Unicode UTF-16 finde ich den String nicht? Ich habe UTF-16LE und UTF-16BE probiert (notepad++). Wobei ich merkwürdig finde, dass ich auch z.B. VCLSTYLE nicht im Kompilat finde, obwohl es ja default-mäßig so eine Resource geben muss (und die sehe ich auch mit einem Resourcen-Explorer in der exe). Das "Nullen" wäre nämlich auch mein Mittel der Wahl gewesen. Manchmal habe ich Strings gesehen, die so wirken, als wären Leerzeichen dazwischen (z.B. K E R N E L 3 2 . D L L)... LG |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
siehe System.pas
Delphi-Quellcode:
für
OlderLocaleOverrideKey = 'Software\Borland\Delphi\Locales'; // do not localize
OldLocaleOverrideKey = 'Software\Borland\Locales'; // do not localize NewLocaleOverrideKey = 'Software\CodeGear\Locales'; // do not localize NewerLocaleOverrideKey = 'Software\Embarcadero\Locales'; // do not localize
Delphi-Quellcode:
Und kann man via
function InternalGetLocaleOverride(AppName: string): string;
function GetLocaleOverride(const AppName: string): string;
Delphi-Quellcode:
auch überschreiben/umgehen.
procedure SetLocaleOverride(const NewPreferredLanguages: string);
Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Da Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Grüße Dalai |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Im Normalfall gibt es in diesen Verzeichnissen aber doch keine Einträge für eigene Programme.
Gut, ich sehe dort einen Eintrag für die msbuild.exe ... wieso eigentlich? Die wird doch garantiert nichtmal etwas von diesen Verzeichnissen wissen, um dort nachzugucken. Und wer erstellt dort eigentlich einen Eintrag? Drum kam ja wohl auch die "Vermutung" auf, dass "normale" eigene Programme dort eh nie etwas finden würden und sie daher auch nie dort etwas zu suchen hätten ... denke ich mal. |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Danke euch allen.
Beide Lösungen funktionieren übrigens (SetLocaleOverride + Nullen im Kompilat, wenn man erstmal die richtige Zeichenkodierung erwischt hat ;) ). LG |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Man wird alt wie 'ne Kuh ... |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Nja, aber für eigene Programme dieses Setting nicht in einem eigenen Registry-Pfad, einer INI oder Sonstwo zu haben .....
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Daneben finde ich es auch ganz praktisch, dass die Spracheinstellungen für alle meine mit Delphi erstellten Programme an der gleichen Stelle in der Registry verwaltet werden können. |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Also wenn ich Delphi's integrierte Übersetzer anwende, werden auf dem Zielsystem automatisch Registry Keys erstellt??
Sowas sollte man schon wissen für einen Deinstaller. |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Wer kommt auf die behämmerte Idee sowas fest einzubauen!? Es ist ja schön das es was gibt zum automatisch übersetzen. Aber ich möchte schon gerne selber entscheiden wo ich mir meine Daten merke. Aber wenn die Pfade immer gleich (Falsch) sind, wie merke ich mir dann unterschiedliche Einstellungen für unterschiedliche Programme? Zitat:
|
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Zitat:
Der Built-In Ansatz funktioniert halt ganz ohne irgendwelchen 3rd-Party Code im Programm. Und wie schon gesagt: Da wird auch nichts in die Registry geschrieben. Das muss schon ganz bewusst von außen kommen oder vom Entwickler im Programmcode vorgesehen sein (z.B. "verwende ab dem nächsten Programmstart die Japanischen Sprachmodule"). Ehrlich gesagt, verstehe ich die ganze Aufregung nicht. Dieses Verhalten gibt es schon seit Jahrzehnten in jedem Delphi-Programm (kann aktuell nicht vor D5 prüfen, war aber definitiv schon früher da). Jetzt hat jemand festgestellt, dass solche Programme beim Start einen bestimmten Registry-Schlüssel abfragen und die halbe Entwicklergemeinde springt im Dreieck. Leute, habt ihr denn die VCL/RTL-Sourcen noch nie gelesen? |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Verstehe das Theater auch nicht. Die integrierte Übersetzungsmechanik in Delphi (ITM/ETM genannt) nutze ich auch selber und das ist schon ein feines Feature. Das gibt es schon seit glaube ich Delphi 3.
Nutzt ihr den keine resourcestrings in eurem Code? Dass Delphi dauraus automatisch die entsprechenden Resourcenfiles erzeugt ist doch eine feine Sache. Wer davon noch nie was gelesen hat, sollte sich vieleicht mal die Emba Doku dazu anschauen: ![]() |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Aber immerhin kann man die bei Delphi finden, bei anderen Entwicklungsumgebungen hat man die Sourcen ja gar nicht erst. |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Zitat:
Es ist echt schade, dass man das bei Embarcadero offenbar anders sieht. |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
Das mir das bekannt sein müsste?? Die Quelltexte lesen? Wie bei anderen Komponentenherstellern bezahle ich dafür das die Komponenten funktionieren wie es im Handbuch beschrieben ist. Denn ich habe was besseres zu tuen als die Quelltexte zu lesen. Und wenn ich die Übersetzung nicht verwende, dann erwarte ich auch das die nicht im Hintergrund rumwerkelt! Das ist der Aufreger. Ich habe mir die Delphi eigene Übersetzung vor sehr langer Zeit (mindestens 15 Jahre) mal angesehen und als viel zu steif eingestuft. Zitat:
Wie soll das via Resourcestrings aus der exe oder einer dll funktionieren? |
AW: "Automatischen" Zugriff auf die Registry unterbinden?
Zitat:
![]() Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 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