Mein Programm benötigt einige Konfigurationsdetails, die in einer INI-Datei gespeichert werden müssen. Dieses Programm installiert auch Erweiterungen für IE und Firefox und ich möchte diese .ini-Datei auch von diesen Erweiterungen lesen. Wenn ich .ini in "... AppData/Roaming ..." beibehalten habe, kann die IE-Erweiterung im geschützten Modus nicht lesen/schreiben. Soweit ich weiß kann nur AppData/LocalLow nur im geschützten Modus lesen. Wenn ich alle meine Konfigurationsdetails auf dieses "... AppData/LocalLoe ..." verschiebe, wird es immer funktionieren? Ist das der übliche Weg? alles, was ich geschrieben habe, ist im Vista-Kontext, wird es mit XP funktionieren? Win7?Welches ist der beste Ort, um die Programmkonfigurationsdatei in WINDOWS zu behalten?
Antwort
Siehe meine Antwort auf diese Frage: How to decide where to store per-user state? Registry? AppData? Isolated Storage?
von dort zu zitieren:
Dateien im Benutzerhandbuch „Roaming“ Ordner in Vista oder „Anwendungsdaten“ in XP mit dem Benutzer bewegen - so dass jeder Einstellungen und Daten sollten dort gespeichert werden.
Dateien unter "Local" und "LocalLow" in Vista und "Lokale Einstellungen" in XP nicht, so ist es ein guter Ort für temporäre Dateien, Dinge, die an den Computer gebunden sind oder Daten, die neu berechnet werden können.
In Vista, als Teil der neuen Sicherheitsfunktionen, die wir alle kennen und lieben, können Sie Programme im "Low Integrity Mode" laufen lassen (zum Beispiel IE im geschützten Modus), diese Programme laufen mit reduzierten Rechten und können ' t Zugriff auf Dateien im Benutzerprofil - außer Dateien im Ordner "LocalLow".
Also, abschließend, Dateien in "LocalLow" gespeichert sind inhärent unsicher und Dateien in "Lokale"/"Lokale Einstellungen" sind wahrscheinlich in einigen großen Unternehmen nicht verfügbar - so, wenn Sie einen guten Grund haben und genau wissen, was Sie gehen mit "Roaming"/"Anwendungsdaten".
UPDATE:
- Wenn Profil Roaming verwendet wird (große kooperieren Umgebungen) den Inhalt der lokalen und LocalLow kann (und wird) verschwinden ohne vorherige Ankündigung.
- Dies sind alle Benutzereinstellungen, wenn Ihr Server unter einem anderen Konto als der Benutzer (z. B. System oder Netzwerk) läuft sie verschiedene Kopien dieser Ordner erhalten.
Um den Ordnerpfad für Programmdaten erhalten Sie WinAPI verwenden sollten:
wchar_t path_buf[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0]);
In Windows Vista Funktion SHGetFolderPath mit SHGetKnownFoldedPath wurde ersetzt. Diese ältere Funktion ist nun einfach ein Wrapper für SHGetKnownFolderPath.
Vielen Dank für Ihre Antwort. Meine Hauptanwendung ist ein winziger Webserver und wir haben eine Erweiterung auf IE sowie Firefox. Also müssen wir den Port behalten, auf dem der Webserver in .ini läuft, und die Erweiterung sollte in der Lage sein, ihn zu lesen, damit wir die richtige URL einrahmen können. Wenn ich in Roaming IE geschützt Modus wird nicht in der Lage, es zu lesen, und wenn ich dies in LocalLow halte ich bin nicht in der Lage, eine XPCom-Schnittstelle zu finden (skriptfähig), um LocalLow Ordnerpfad zu finden. – Manoj
Ich weiß nichts über XPCom, also kann ich dir nicht helfen, wie jia3ep sagte, die Win32-API, um den Pfad zu bekommen, ist SHGetKnownFoldedPath. – Nir
Siehe mein Update für einige Dinge zu beachten – Nir