Sous Windows, est-ce qu’une alternative de dossier à ProgramData?

J’écris une application de bureau et j’ai besoin d’un dossier qui …

  • Existe dans Windows 7 et Vista
  • Est commun à tous les utilisateurs (pour les données de configuration du magasin).
  • Application peut enregistrer des données sur elle, sans privilèges d’administrateur (pas comme “ProgramData”).
  • est standard (je ne veux pas créer un autre dossier spécifique à l’application dans “C:”, le bureau ou autre).
  • “Program Files” n’est bien sûr pas une option.

Pouvez-vous suggérer un dossier approprié ou mieux utiliser le registre?

La méthode recommandée consiste à créer un dossier au moment de l’installation, dédié à votre application, sous “ProgramData” (c.-à-d. CSIDL_COMMON_APPDATA / FOLDERID_ProgramData ).

Comme vous le savez déjà, le dossier CSIDL_COMMON_APPDATA est en lecture seule pour les utilisateurs standard. Ainsi, votre programme d’installation doit donner au dossier qu’il crée une liste de contrôle d’access qui autorise l’access dont vous avez besoin.

C’est la solution qui répond à tous les critères énoncés dans vos puces.

Vous mentionnez le registre. Aucune partie du registre n’est partagée par tous les utilisateurs et pourtant accessible en écriture par les utilisateurs standard. Bien que vous puissiez utiliser les listes de contrôle d’access pour accorder des droits d’access plus permissifs au registre, ce n’est vraiment pas chose faite. S’il vous plaît oublier que j’ai même mentionné cette possibilité!

Si votre application est .NET, utilisez CommonApplicationData – vous pouvez obtenir l’emplacement réel en appelant GetFolderPath .

EDIT – selon les commentaires:

Vous devez configurer ACL correctement – pour obtenir un exemple de code source, consultez la page http://www.codeproject.com/Tips/61987/Allow-write-modify-access-to-CommonApplicationData.

Qu’en est-il des annuaires d’utilisateurs publics? Par exemple: C:\Users\Public\Libraries ou C:\Users\Public\Documents

J’ai remarqué ces dossiers sur plusieurs de mes machines Windows 7. Je ne suis pas sûr si c’est toujours là, mais pourrait être une option. J’espérais quelque chose comme un %appdata% pour l’utilisateur public, mais la chose la plus proche que j’ai trouvée était Public\Libraries .

(En guise de remarque, il semble que C:\Users\Public\Desktop nécessite l’administrateur pour écrire.)

Qu’en est-il de l’utilisation de% APPDATA% / Company / Product pour le répertoire?