![]() |
[Delphi 2007] Wo INI Dateien unter Vista speichern ?
Guten Morgen,
wir portieren gerade unsere alten Anwendung auf Windows Vista. Ich hab mal irgendwo gelesen, dass Programme unter Vista ihre zur Laufzeit veränderbaren Daten (bei uns INI Dateien und Excel Files) nicht mehr im Programmordner (C:\Programme\...\) ablegen dürfen. In welchem Ordner sollte man diese dann unter Vista ablegen (Gibt es unter XP auch den entsprechenden Ordner?), gibt es diesen Ordner irgendwie in den Systempfaden? Danke, winx |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Eigentlich gilt dieser Grundsatz schon länger, nur sorgt die Virtualisierung/dateiumleitung von Vista nun zu Nebeneffekten.
Allgemeingültige Ini-dateien gehären unter ALLUSERS benutzerbezogene ins Benutzerprofil. Diese Special Folders kannst du ermitteln. |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Richtige Antwort auf die Frage im Titel: Gar nicht mehr.
Man sollte keine INI-Dateien mehr benutzen. Besser sind XML-Konfigurationsdateien. Aber das ist nur ein Detail ;-) Zur Frage: Ich halte es folgendermassen: Konfigurationseinstellungen, die NUR ein Admin verändern darf: In eine XML-Konfig in das Anwendungsverzeichnis. Hier kann man sich sicher sein, dass der User nicht an den wichtigen Parametern schrauben darf. Bei Dir dann halt wohl weiterhin eine .ini hierhin. Konfigurationseinstellungen und Daten, die für alle Benutzer gelten, die aber auch von allen Benutzern geändert werden dürfen in 'Gemeinsame Dateien'. Einstellungen und Daten die Benutzerspezifisch sind: Ab in das Benutzerprofil unter Eigene Dateien. Wichtig zu Punkt 1 ist noch: Die Anwendung muss für Vista über ein gültiges Manifest verfügen, so dass die Dateisystemvirtualisierung definitiv nicht aktiv ist. Sonst 'darf' der User nämlich die Dateien im Programme-Ordner 'ändern', nur landet die Änderung eben nicht dort sondern in einem Virtualisierungsordner in seinem Pfil, aber dennoch wird die geänderte Datei gelesen. |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Hallo,
danke für die Antworten. Noch ne Frage (such aber schon selber): gibt es in XP und Vista gemeinsame Pfadvariablen? Also welchen "Key" brauch ich um bspw den AllUsers Ordner zu finden? Ist es "CSIDL_APPDATA"? Danke, winx |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
Nicht in die Eigenen Dateien! Der Ordner ist für den Benutzer und seine selber(!) erstellten Dateien gedacht und nicht für irgendwelche Programm Dateien und wenn es nur Einstellungsdateien sind. Dazu gibt es das AppData Verzeichnis! Siehe auch: ![]() Zusätzliche CSIDLs: ![]() Hier wird auch schön auf die Problematik "Programmdateien in den Eigenen Dateien" eingegangen: ![]() |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Hi,
also welchen Ordner soll ich denn nun für Dateien verwenden, der unter beiden BS funzt. "CSIDL_COMMON_DOCUMENTS" ??? gruß, winx |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Und bloß weil es MS macht müssen wir es auch machen? Aber egal ... das wird zu OT.
Ich würd CSIDL_APPDATA (Benutzerspezifisch) oder CSIDL_COMMON_APPDATA (für alle Benutzer) verwenden. |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Hat sich nicht irgendeine dieser Konstanten in der bedeutung geändert bzw. gibt es denn die u.U. nicht unter alten Windows-Versionen?
ich denke ein mehrstufiger Ansatz der Art: - AppData-Verzeichnis vorhanden und verfügbar? - Falls nein: Schreibbar in Anwendungsverzeichnis? - Falls nein: Schreibbar in Windows-Verzeichnis? - Falls nein: Unterverzeichnis in "Dokumente und Einstellungen" erstellbar und schreibbar? - Falls nein: Programmende mit Fehlermeldung wird u.U. nötig sein um nicht nur Vista/XP zu unterstützen. |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
CSIDL_APPDATA funktioniert ab Win98! Bei Win95 einfach über die Registry -> HKLM\Software\Microsoft\Windows\Currentversion\Pro gramFilesDir <- das Programmverzeichnis ermitteln und "Application Data" dran hängen, aber da kannst du auch gleich ins eigene Programmverzeichnis schreiben.
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Hier stehen ein paar Gründe:
![]() |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
Zitat:
Zitat:
Zitat:
Ich empfehle CSIDL_COMMON_APPDATA, falls mehrere user darauf zugreifen sollen. Die Rechteeinstellung unter Vista hatte ich gerade als Thema: ![]() Grüße, Messie |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Die meisten Punkte treffen aber auch auf XML-Dateien zu. ;)
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Das ist wohl wahr :) Ich denke mal die Hauptargumente gegen die INI Dateien, sind die Größenbeschränkung und fehlender Unicode Support.
Selber bevorzuge ich in Delphi zum größten Teil auch noch die INI Dateien, da mir die ganze XML Geschichte zuviel Overhead produziert, nur um ein paar Programmeinstellungen abzuspeichern. Nur unter C# bin ich schon komplett auf XML umgestiegen, da dort der Support schon im Framework drin ist ... aus der NET - Ecke wird auch das "Depricated" der INI Dateien kommen ;) |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Das kannst du theoretisch auch selber bewerkstellingen. Sobald eine Unicode Datei vorliegt, speichert WritePrivateProfileStringW in Unicode. Wenn die Datei allerdings noch nicht vorhanden ist, wird automatisch in ANSI gespeichert. Man müsste also in einem Zwischenschritt die Datei vor der Benutzung durch WritePrivateProfileString als Unicode Datei erstellen.
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Was die Frage "Eigene Dateien" oder "Anwendungsdaten" angeht: Egal wie es andere machen, schonmal darüber geärgert, dass irgendeine blöde Anwendung die Dateien in "Eigene Dateien" gespeichert hat? Eben. Also müssen wir das ja nicht auch machen ;)
Visual Studio macht das zum Beispiel, weil darin z.B. die Projekte, Addins, Templates etc. des Benutzers liegen und er mit diesen auch arbeitet. Nicht wirklich schön, aber verständlich. Dateien / Ordner, die der Benutzer nicht anfassen soll, gehören da aber nicht hinein. In dem verlinkten Artikel schreibt Raymond Chen übrigens nicht, dass man keine INI-Dateien mehr verwenden sollte, weil sie doof sind - er schreibt, dass man die Registry statt der INI-Dateien verwenden sollte. Über XML-Dateien schreibt er dann auch noch. Viele Benutzer mögen es zwar nicht, wenn ein Programm in die Registry schreibt, aber eigentlich ist es der vorgesehene Ort für Programmeinstellungen und ähnliches, und zwar aus den von Raymond Chen genannten Gründen. Wenn man das aber nicht machen möchte, sondern lieber in einer Datei, dann nicht aufhalten lassen - das Format spielt keine große Rolle (abgesehen von eventuellen Anforderungen der Anwendung, für hierarchische Informationen ist XML sicher besser als INI). Aber bitte, bitte: Programmeinstellungen, Caches oder ähnliches gehören nicht in "Eigene Dateien". Es ist schlimm genug, dass man zum Beispiel einen "EA Games"-Ordner darin hat, weil Spielstände ja unbedingt in "Eigene Dateien" liegen müssen... Ansonsten schadet es natürlich nicht, den Benutzer zu fragen. Je nach Nutzergruppe aber nicht gerade beim Start (Benutzer mögen ja keine Fragen und fühlen sich durch eine Frage, die sie nicht verstehen, belästigt, während Power User sich darüber freuen), aber man kann diese Möglichkeit ja im Einstellungsdialog vorsehen. Da kann man dann gegebenenfalls auch benutzerdefinierte Ordner zulassen. Sinnvollerweise aber nur die Möglichkeiten anzeigen, die funktionieren werden (also z.B. Programmordner anbieten, falls er beschreibbar ist). Das mal als meine Meinung als Benutzer. |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
![]() |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Dann müssten die Entwickler aber 2 varianten entwickeln Vista/Pre-Vista. Deshalb werden die Savefiles wohl weiterhin unter Eigene Dateien zu finden sein.
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
War mir entfallen, weil ich das direkt in die TntControls eingebaut habe... Grüße, Messie |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Interessant, das mit der Folder-ID für SavedGames wusste ich nicht. Ergibt aber Sinn, Spiele werden in Vista ja auch z.B. vom Startmenü anders behandelt als normale Programme.
Was zwei Versionen angeht für Vista/Nicht-Vista: Naja, das ist nicht so dramatisch. Wenn man dieses tolle Games-For-Windows-Logo haben will, muss man sowieso eine Menge Zeug machen. Zum Beispiel diese komischen Plugins fürs Windows Media Center. Da kommt es auf ein "Vista ? FOLDERID_SAVEDGAMES : FOLDERID_APPDATA" oder sowas nun wirklich nicht an. Mal von dem ganzen Aufwand abgesehen, eine Version für DirectX 9 und eine für DirectX 10 zu haben. |
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
|
Re: [Delphi 2007] Wo INI Dateien unter Vista speichern ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 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