2016-06-26 5 views
0

Ich habe eine QT-basierte Anwendung, bestehend aus einer Konfigurationsdatei (eine Textdatei mit der Erweiterung cfg) und einer SQLite-Datendatei, die mit der Anwendung installiert wird. Code überprüft, ob die Konfigurationsdatei im Installationsverzeichnis vorhanden ist.Installation der QT-Anwendung auf Windows C-Laufwerk

Ich habe dieses seltsame Problem, wo, wenn die angegebene cfg-Datei nicht aktualisiert wird, aber die Konfigurationen irgendwo wo sonst gespeichert werden. Auch wenn ich die cfg-Datei lösche, funktioniert die Anwendung immer noch. Dies ist so, als ob das Betriebssystem eine Kopie der Konfigurationsdateien und Datenbankdateien erstellt und diese anstelle der eigentlichen Datei aktualisiert.

Wenn Anwendung in einem anderen Laufwerk installiert ist (sagen wir d: :), ist dieses Verhalten nicht vorhanden. Wenn ich die Anwendung als Administrator ausführe, wird die App die Konfigurationsdatei bearbeiten und verwenden, die in Laufwerk C: gespeichert ist. Existiert ein solcher Cache für bearbeitbare Dateien, die auf Laufwerk C installiert sind? Wenn ja, wie geht man darum herum. Danke im Voraus.

+1

Da wir nicht wissen, wie Ihr Code aussieht, können wir Ihnen nicht helfen. Wenn Ihre Konfigurationsdateien die API der INI-Datei verwenden, ist es möglich, dass Lese- und Schreibvorgänge in die Registrierung umgeleitet werden. Der einfachste Weg, dies herauszufinden, ist, [Process Monitor] (https://technet.microsoft.com/en-us/sysinternals/bb896645) auszuführen und zu sehen, auf was Ihre Anwendung zugreift, in Kombination mit einem einzelnen Schritt durch Ihren Code. Sie haben den Qt-Quellcode aus einem bestimmten Grund. – IInspectable

Antwort

1

Dies ist, als würde das Betriebssystem eine Kopie der Konfigurationsdateien und Database-Dateien erstellen und diese anstelle der eigentlichen Datei aktualisieren.

Das könnte tatsächlich der Fall sein. Windows Vista und höher haben das Konzept des Windows Virtual Store eingeführt, um zu verhindern, dass Anwendungen an möglicherweise schädliche Speicherorte schreiben. Für eine Erläuterung siehe z.B. http://portableapps.com/node/35519

+0

Vielen Dank. Ich denke, ich sollte die Konfigurationsdateien und DB-Dateien während des ersten Startvorgangs an einen anderen Ort verschieben. Gibt es einen anderen allgemeinen Weg? Problem ist während der Neuinstallation. Alte Dateien im virtuellen Speicher werden noch berücksichtigt. –

+0

Wenn Ihr Programm eine korrekte Installation hat, sollten Sie die Einstellungen in einem Unterordner von '% APPDATA%' speichern, wie es die Empfehlung für installierte Programme ist. Die Deinstallation kann diese Daten nach Belieben verlassen oder löschen. –