Hallo!
Bei der Installation meines Programmes werden sowohl die Programm EXE als auch einige Konfigurationsdateien in das Installationsverzeichnis kopiert. Die Konfigurationsdateien sind vom Benutzerunabhängig. Das Programm
liest ausschließlich Informationen aus diesen Dateien und
schreibt nie in diese.
Ich weiß, dass Konfigdateien in denen einen Programm seine Einstellungen speichert nicht ins Programmverzeichnis sondern nach AppData gehören. Aber in meinem Fall handelt es sich wie gesagt nicht um Konfigdateien in diesem Sinne.
Beim Start versucht das Programm nun auf die Konfigdateien in seinem Verzeichnis zuzugreifen. Des gelingt allerdings nicht, da das Programm die Dateien nicht finden kann.
FileExists(ExeVerzeichnis+KonfigdateiName) ergibt immer FALSE. Ebenso liefert der Versuch die Datei mit einem Stream zu öffnen den Fehler, dass das System die Datei nicht finden kann:
TFileStream.Create(KonfigDatei, fmOpenread or fmShareDenyNone);
Laut Explorer befindet sich die Datei aber eindeutig in diesem Verzeichnis. Das Ergebnis ist unabhägig davon, ob die EXE und die Konfigdateien durch das Setup oder manuell in das Programmverzeichnis kopiert wurden. Laut Explorer sind die Dateien an Ort und stelle und das Programm kann sie nicht finden.
Ich weiß, dass
Schreibzugriffe auf das Programmverzeichnis von der
UAC auf ein virtuelles Verzeichnis umgeleitet werden. Aber ich will ja
nichts schreiben sondern
nur lesen...
Wenn der Lesezugriff wegen mangelnder Rechte o.ä. verweigert würde, könnte ich das auch noch nachvollziehen. Aber warum werden die Dateien einfach nicht gefunden?
Kennt jeman das Problem? Weiß jemand was ich hier falsch mache und wie ich das ganze lösen kann?
Besten Dank
Ares