Vista und Program
-
02-07-2019 - |
Frage
Was ist der richtige Ort, Programmdaten-Dateien zu speichern, die das gleiche für jeden Benutzer ist, aber für das Programm beschreibbar sein? Was wäre das Äquivalent Lage auf MS Windows XP sein? Ich habe gelesen, dass C: \ Programdata nach der Installation von normalen Benutzern nicht beschreibbar ist. Ist das wahr? Wie kann ich abrufen das Verzeichnis der Platform SDK programmatisch mit?
Lösung
SHGetFolderPath () mit CSIDL von CSIDL_COMMON_APPDATA.
Lesen Sie mehr unter http://msdn.microsoft .com / de-de / library / bb762181 (VS.85) aspx
Wenn Sie den Pfad in einer Batch-Datei benötigen, können Sie auch das% ALLUSERSPROFILE% Umgebungsvariable verwenden.
Andere Tipps
Es gibt eine große Übersicht über die verschiedenen Möglichkeiten: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead -von-Programm-files.aspx
Wo soll ich schreiben Programmdaten Statt Program Files?
Ein gemeinsames Anwendungscode-Update dies: „meine Anwendung schreiben Dateien Dateien zu programmieren. Ich fühlte mich wie so guter Ort, um es als jede setzen andere. Es hatte den Namen meiner Anwendung auf es bereits, und weil meine Nutzer waren admins, es funktionierte gut. Aber jetzt sehe ich, dass dies nicht so groß ein Ort sein, einmal Dinge zu bleiben, wie ich dachte, denn mit noch Administratoren UAC laufen mit Standard-Benutzerähnlichen Privilegien meistens. Also, wo soll ich legte meine Dateien statt? "
Eigentlich SHGetFolderPath
veraltet.
SHGetKnownFolderPath
sollte stattdessen verwendet werden.
Sie können mit:
CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);
Siehe Raymond Chen Artikel über diese spezifische Frage .
Kurz gesagt: Du für ein Sicherheitsloch zu fragen .