Suggestion emplacement du fichier qui sera modifiable par tous les utilisateurs de Windows?
-
21-09-2019 - |
Question
Je construis un produit qui implique
- un cache de données de service Windows sur la machine locale,
- processus utilisateur lecture que les données et l'écriture de leurs propres données,
- le service à son tour écrit en arrière que les données à un serveur.
Où dois-je mettre les fichiers de données pour cela, de telle sorte qu'ils vont être partagés par tous les utilisateurs et lecture / écriture? Le logiciel fonctionnera dans un environnement d'entreprise où les ordinateurs de bureau sont parfois assez verrouillés, de sorte que, par exemple, certains utilisateurs ne seront pas des droits d'écriture sur C:. \ Program Files
Je ne pense pas que C: \ Documents and Settings \ All Users \ Application Data \ est un bon candidat - je pense par défaut seulement Admins et Utilisateurs avec pouvoir ont accès en écriture ici
.Je pourrais utiliser l'application dossier de données de chaque utilisateur, mais ce serait un peu pénible car différentes personnes pourraient utiliser chaque machine ... il serait plus simple s'il y avait un seul emplacement partagé.
Je développe en C # .net 2005, mais c'est probablement pas trop utile.
La solution
Malheureusement, vous avez pas d'autre choix réel. Vous devez (vous devez vraiment) appeler SHGetSpecialFolderLocation pour obtenir le chemin d'accès c: \ users \ public \ AppData (qui est le nom du dossier que vous avez lié ci-dessus, mais sur Vista et Windows 7 peut-être) Ensuite, vous devez créer votre propre dossier de l'application qui y sont. Et puis, vous devez, utiliser les API de sécurité pour modifier l'ACL du dossier créé.
Il n'y a pas de dossier sur le système avec une ACL par défaut qui permet à plusieurs utilisateurs d'administrateur non à lire et à écrire les mêmes fichiers.
c: \ users \ public \ AppData est le plus proche. Modification de l'ACL d'un dossier d'application semble ici la meilleure approche. Bien sûr, une fois que l'on a eu recours à une modification ACL, le dossier pourrait vraiment être créé nulle part. Mais cela pourrait surprendre les administrateurs système et entraîner des failles de sécurité weired.