J’écris une application de bureau et j’ai besoin d’un dossier qui …
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?