Sur mon système, %AppData%
conduit à ApplicationData
qui est C:\Users\<USER>\AppData\Roaming
Mais il y a aussi C:\Users\<USER>\AppData\Local
Et pour encore plus de confusion D:\Users\<USER>\AppData\LocalLow
string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Ma question est la suivante: dans quels emplacements mon application doit-elle enregistrer ses données?
Existe-t-il des directives pour lesquels de ces emplacements utiliser? Et est-ce que je me laisse ouvert à des problèmes si je choisis le mauvais endroit?
Le dossier Roaming
est copié entre les machines lorsque les profils itinérants sont activés (dans un environnement de domaine). Utilisez-le pour les données d'application que vous souhaitez partager entre les machines. Mais ne stockez pas de fichiers volumineux là-dedans - les services informatiques n'aiment pas cela lorsque vous faites cela, et cela augmente le temps nécessaire à l'utilisateur pour se connecter et se déconnecter lorsque les fichiers sont copiés.
Le dossier Local
n'est pas copié entre les machines. Utilisez-le pour les données d'application spécifiques à une machine.
Le dossier LocalLow
est utilisé pour les tâches à faible privilège (comme Internet Explorer). Vous ne devriez pas avoir à vous en préoccuper.
Pour les fichiers que l'utilisateur a spécifiquement enregistrés, vous devez les placer (par défaut) dans le dossier Documents
.
Selon MSDN la différence est que LocalApplicationData
reste sur la machine locale et ne se déplace pas ... ApplicationData
se déplace par exemple, si l'utilisateur se connecte au domaine à partir d'un autre ordinateur, il sera synchronisé ...
Le LocalLow
fait référence à des situations spécifiques comme un BHO fonctionnant en "Mode protégé" d'IE ...
Pour une application standard, utilisez toujours ApplicationData
. Utilisez LocalApplicationData
pour les choses qui ne devraient PAS errer avec l'utilisateur ...
Depuis MSDN - énumération Environment.SpecialFolder :
ApplicationData - Le répertoire qui sert de référentiel commun pour les données spécifiques à l'application pour l'utilisateur itinérant actuel. Un utilisateur itinérant travaille sur plusieurs ordinateurs d'un réseau. Le profil d'un utilisateur itinérant est conservé sur un serveur du réseau et est chargé sur un système lorsque l'utilisateur se connecte.
LocalApplicationData Le répertoire qui sert de référentiel commun pour les données spécifiques à l'application utilisées par l'utilisateur actuel non itinérant.
En bref, utilisez ApplicationData
pour les profils itinérants et LocalApplicationData
pour les profils non itinérants.