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?

War es hilfreich?

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top