AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Die meisten Programme werden im Laufe der Zeit erweitert und damit werden dann auch z.B. mehr Einstellungen usw. benötigt. Da ist es viel besser, wenn man gleich TRegistry benutzt hat und damit auch die Möglichkeit hat die Möglichkeiten der Registry auszuschöpfen. Davon abgesehen sehe ich aber auch nicht den großen Unterschied im Quelltext, nur dass du bei TRegIniFile keinerlei Möglichkeit zur Fehlerbehandlung hast, da du nirgends den Rückgabewert von OpenKey im Konstruktor bekommst. Du weißt also nicht, ob du hinterher überhaupt schreiben kannst, kannst also nur auf eine Exception prüfen (oder CurrentPath gegenprüfen, aber naja)... |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
@jaenicke
Wenn du dir TRegIniFile genauer ansiehst, wirst du bemerken, dass es auf HKEY_CURRENT_USER beschränkt ist. Mit TRegIniFile kann man also nicht irgendwo anders schreiben, nur in HKEY_CURRENT_USER Zweig. Das ist die Einschränkung. Und auf HKEY_CURRENT_USER hat man in der Regel immer Rechte, da es dem CURRENT_USER, als dem aktuellen Benutzer gehört. Man greift also auf den eigenen Zweig der Registry zu. Somit sollte es keine Probleme geben. Die Probleme die du meinst tauchen in der Regel in anderen Zweigen auf. Ich könnte mir nur den einen Grund vorstellen, dass ein anderes Programm auf meine Einstellungen zugreift, was eigentlich nicht vorkommen sollt. Also nochmal, allgemein auf die Registry zugreifen, da gebe ich dir Recht. Hier gehen es aber um HKEY_CURRENT_USER. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Ich denke es liegt an was anderen. Ich hab auf der Kiste neben Delphi 7 und Delphi 2009 (Vollversionen) auch Delphi XE8 (30 Tage Trial). Kompiliere ich die Exe unter Delphi 7 und starte mit dem Explorer startet sie ohne Probleme. Aber sowohl unter 2009 als auch unter XE8 wenn ich die Exe über den Explorer starte kommt zuerst die Meldung 'The publisher could not be verified', was man sonst kennt wenn man eine Exe von einem Netzlaufwerk startet. Es ist aber hier alles lokal und zwar für alle 3 in c:\projects. Kopiere ich die Exes die von 2009 und XE8 erzeugt wurden woanders hin kommt die Meldung nicht mehr. Windows 7 mag also die von 2009 und XE8 erzeugten Exes nicht besonders und schränkt den Schreibzugriff auf die Registry, allerdings nur in dem Verzeichnis in dem sie kompiliert wurden. Um die Theorie zu testen habe ich den Code leicht geändert:
Delphi-Quellcode:
Ergebnis:
FRegistry := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY);
FRegistry.RootKey := HKEY_CURRENT_USER; if FRegistry.OpenKey('\Software\Vendor\Productname', True) then begin ShowMessage('ok'); end else begin ShowMessage('not ok'); end; Start aus c:\projects\project1: not ok Nach Kopieren der Exe-Datei nach c:\test: ok Also habe ich das Projekt nach c:\test\project1 verschoben. Starten -> ok. Wenn ich jedoch einen Rebuild mache und starte -> not ok. Sehr sehr merkwürdige Sache. Ich denke es liegt irgendwie an meinem System. Ich verstehe aber nicht wieso die Exe wenn sie mit Delphi 7 kompiliert wird keinerlei Probleme macht. Vielleicht erkennt Windows 7 dass die Exe dann von einem Compiler ist der von der Era von vor Windows 7 stammt und gibt der Exe dann automatisch mehr Rechte (Kompatibilitätsmodus). Trotzdem ist es extrem merkwürdig weil ich als Admin eingelogt bin und UAC komplett aus ist. 'Run as Administrator' ändert an der Sache nichts. Bin wirklich mit meinem Latein am Ende. :roll: |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Schau mal genauer in folgende Registry-Zweige:
Code:
ob dort deine EXE oder ähnliches mit Hinweis auf selbige auftaucht. Prüfe außerdem, ob die EXE an sich im Kompatibilitätsmodus läuft (Rechtsklick > Eigenschaften).
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags
HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AppCompatFlags MfG Dalai |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Dalai, Danke für die Hinweise.
Im Kompabilitätsmodus (Windows XP3) direkt aus dem Projektverzeichnis kommt zwar OK, d.h. der Key wird gelesen, aber die App crasht dann sobald ein Schreibzugriff auf die Registry kommt (nach Umkopieren OK und kein Crash). Die Registry Keys werde ich gleich überprüfen. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Habe alle AppCompatFlags Registry keys (inkl Subkeys) durchgeschaut, nichts dort zeigt auf die Exe oder c:\projects.
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Zitat:
vielleicht helfen Dir die Links weiter: http://superuser.com/questions/34109...-network-files http://www.technipages.com/disable-p...ified-messages Gruß K-H |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Kann es sein, dass du irgendeinen Virenscanner oder Internet Security verwendest, die da blockieren könnte? Testweise mal abschalten. MfG Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz