Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im Wind (https://www.delphipraxis.net/184030-tjvappinifilestorage-mit-location%3Dflexefile-speichert-unter-win-xp-zusaetzlich-im-wind.html)

nietzke 20. Feb 2015 14:02

TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im Wind
 
Zum Speichern der Fenstereinstellungen nutze ich TJvAppIniFileStorage. Location ist auf flExeFile eingestellt. Unter Windows XP wird die ini-Datei wie gewünscht im Programmpfad gespeichert, aber zusätzlich noch im Windows-Pfad. Bei Nutzern mit eingeschränkten Rechten kommt es zur Fehlermeldung, dass die ini-Datei nicht gespeichert werden kann.
Woran liegt das, wie läßt sich das vermeiden?

jaenicke 20. Feb 2015 16:16

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Das kann ich nicht reproduzieren.

Zum Testen habe ich:
  • TJvAppIniFileStorage aufs Formular gelegt
  • Location steht schon auf flExeFile
  • Filename auf abc.ini gesetzt
  • TJvFormStorage aufs Formular gelegt
  • Dort AppStorage auf die Storagekomponente gestellt
Die abc.ini wird korrekt im Anwendungspfad der Exe gespeichert und gelesen, nirgends sonst.

// EDIT:
Getestet unter Windows 8.1 und XP.

Bernhard Geyer 20. Feb 2015 18:33

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Speichern im Anwendungspfad ist schlecht. Funktioniert unter W2k und XP nur als Hauptbenutzer und ab Vista nur mit daktiverter UAC oder wenn die Virtualisierung aktiv ist.
Genau ist es mit dem Windows-Pfad.

Speichern an diesen Stellen war für Win9x/ME ganz brauchbar. In der NT-Schiene von Windows eigentlich schon immer eine schlechte Wahl.
In alten Windows-Versionen war der %Appdata%-Pfad sinnvoll. Ab Vista ist hier eher C:\ProgramData zu verwenden.

Sir Rufo 20. Feb 2015 19:34

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Der %APPDATA% Pfad ist doch perfekt, dann werden die Einstellungen benutzerbezogen gespeichert.

Wer nur alleine vor dem Rechner hockt, dem mag das schnurz sein, als Quasi-Standard würde ich das nicht ansetzen.

HolgerX 21. Feb 2015 14:49

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Und die Einschränkungen im Zugriff gilt nur, wenn der Anwendungspfad unterhalb vom 'Program Files' liegt.

Ist die Anwendung in einem anderem Verzeichnis oder Laufwerk, dann funktioniert das Schreiben von INI-Files problemlos. :wink:

nietzke 27. Feb 2015 08:33

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Sinn des Speicherns in den Programmpfad ist, dass man das Programm im Prinzip von einem Stick starten kann und es wird nichts außerhalb des Programmpfads gespeichert. (So war es zumindest gedacht) Die IT-Leute in Krankenhäusern sind immer froh, wenn nicht irgendwelche Dateien irgendwo hin gespeichert werden.
Ich verstehe nur nicht, warum die ini-Datei überhaupt in den Windows-Pfad gespeichert wird. Bei der Kollegin gab es eine Fehlermeldung, weil kein Schreibrecht in diesem Pfad besteht.
Ich verwende JVCL337CompleteJCL1105-Build3400, die neuste Version, die mit Delphi 5 Enterprise läuft. Evtl. gibt es das Phänomen in neueren Versionen nicht mehr.
Hat jemand eine Idee, wie man den zusätzlichen Speicherversuch unterbinden kann?

Sir Rufo 27. Feb 2015 08:42

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Zitat:

Zitat von nietzke (Beitrag 1291689)
Sinn des Speicherns in den Programmpfad ist, dass man das Programm im Prinzip von einem Stick starten kann und es wird nichts außerhalb des Programmpfads gespeichert. (So war es zumindest gedacht)

Dann gib deinem Programm eine Option mit, ob die in diesem Kontext portable ist oder eben nicht.
Zitat:

Zitat von nietzke (Beitrag 1291689)
Die IT-Leute in Krankenhäusern sind immer froh, wenn nicht irgendwelche Dateien irgendwo hin gespeichert werden.

Es wird nicht irgendwo gespeichert, sondern an der Stelle, wo es vom Erbauer des Betriebssystems vorgesehen ist. Und es gibt da einige Plätze, wo du das ablegen kannst, abhängig davon, ob die Daten z.B. in einer Domain mit in der Profil-Sicherung sind oder nicht.

Problematisch ist eben, dass sich ein großer Teil der Programmierer daran einfach ums Verrecken nicht halten will. So gehört es auch zum guten Ton an diesen Ablage-Orten ein entsprechendes Unterverzeichnis anzulegen.

Meine Struktur die ich dort anlege lautet:
Code:
de.<companyname>
+-<appname>
  +-(ab hier sind die Daten für diese Anwendung zu finden)

nietzke 27. Feb 2015 08:48

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Zitat:

Zitat von Sir Rufo (Beitrag 1291690)
Dann gib deinem Programm eine Option mit, ob die in diesem Kontext portable ist oder eben nicht.

Und wie unterbinde ich in der portablen Version das Speichern im Windows-Verzeichnis, obwohl ich Location ist auf flExeFile eingestellt?

nietzke 5. Mär 2015 09:49

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Zitat:

Zitat von nietzke (Beitrag 1291691)
Und wie unterbinde ich in der portablen Version das Speichern im Windows-Verzeichnis, obwohl Location auf flExeFile eingestellt ist?

Hat jemand eine Idee dazu?

Sir Rufo 5. Mär 2015 10:18

AW: TJvAppIniFileStorage mit Location=flExeFile speichert unter Win XP zusätzlich im
 
Ja, ich würde die Komponente umschreiben, denn so ist die nicht wirklich zu gebrauchen.

Als Speicherort für den Benutzer benötigst du 3 Optionen
  • Roaming -> Benutzer-Einstellungen in
    Delphi-Quellcode:
    %APPDATA%\<Anwendungs-Pfad>\foo.exe.ini
  • Local -> Benutzer-Einstellungen in
    Delphi-Quellcode:
    %LOCALAPPDATA%\<Anwendungs-Pfad>\foo.exe.ini
  • Portable -> Benutzer-Einstellungen im Pfad der Anwendung
    Delphi-Quellcode:
    foo.exe.<User-SID AS Hex>.ini
Generell macht es auch Sinn eine Standard-Konfiguration mitzugeben, die dann in der Datei
Delphi-Quellcode:
foo.exe.ini
zu finden ist.

Diese generelle Einstellung wird dann mit den Benutzer-Einstellungen "gemischt". Ist also ein Wert in der Benutzer-Einstellungen nicht vorhanden, dann wird der Wert aus den Standard-Einstellungen geladen. Beim Speichern der Werte, werden diese ausschließlich in der Benutzer-Konfiguration gespeichert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.
Seite 1 von 2  1 2      

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