CSIDL_COMMON_APPDATA ist der richtige Ort für Programm-Daten, die für alle Benutzer gleichermaßen verfügbar sind.
Allerdings ist das Verzeichnis per Standard
ohne Schreibrechte für Nicht-Admin-Benutzer.
Wenn auch von allen Benutzern Dateien verändert werden dürfen / müssen, dann hat das
Installations-Programm dafür zu sorgen, den angelegten Unterordner in CSIDL_COMMON_APPDATA mit den entsprechenden Rechten zu versehen.
Das gleiche (keine Schreibrechte für nicht-Admins per Standard) gilt übrigens auch für CSIDL_COMMON_DOCUMENTS, nur dass das der falsche Ort für Programmdaten ist.
Genau so wie oben beschrieben ist es auch von Microsoft vorgesehen:
Zitat:
# CSIDL_COMMON_APPDATA
This folder should be used for application data that is not user specific. For example, an application may store a spell check dictionary, a database of clip-art or a log file in the CSIDL_COMMON_APPDATA folder. This information will not roam and is available to anyone using the computer. By default, this location is read-only for normal (non-admin, non-power) Users. If an application requires normal Users to have write
access to an application specific subdirectory of CSIDL_COMMON_APPDATA, then the application must explicitly modify the security on that sub-directory during application setup. The modified security must be documented in the Vendor Questionnaire.
Der Text kommt direkt von Microsoft selbst, nachzulesen (mit vielen weiteren nützlichen Informationen über Datenspeicherung in Windows) unter folgendem Link:
http://msdn.microsoft.com/en-us/library/ms995853.aspx
Du legst also deine Programmdaten in einem Unterordner von CSIDL_COMMON_APPDATA ab und fügst diesem Schreibrechte für alle Benutzer während deiner Programm-Installation hinzu, dann ist alles in Ordnung.