Utilisation légitime du dossier Windows «Documents» dans les programmes


40

Quiconque aime que leur dossier Documents ne contienne que des éléments qu’ils y placent sait que le dossier Documents standard n’est absolument pas adapté à cette tâche. Chaque programme semble vouloir mettre ses paramètres, ses données ou quelque chose d'aussi indifférent dans le dossier Documents , malgré le fait qu'il existe des dossiers spécifiques à ce travail 1 .

Pour que cela ne semble pas vide, prenons comme exemple mon dossier "Documents" personnel. Je ne l' utilise jamais , je n'ai jamais sauvegardé quoi que ce soit dans ce dossier. Et pourtant, il contient 46 dossiers et 3 fichiers au niveau supérieur, pour un total de 800 fichiers dans 500 dossiers. C'est 190 Mo de "documents" que je n'ai pas créés. De toute évidence, tous les documents seraient immédiatement perdus dans ce gâchis.

Ma question est la suivante : peut-on faire quelque chose pour améliorer la situation de manière à rendre les "documents" utiles à nouveau, par exemple dans les 5 prochaines années? Les programmeurs peuvent-ils être en quelque sorte éduqués en masse pour ne pas l'utiliser comme dépotoir? Le système d'exploitation peut-il commencer à signaler des "faux" emplacements cachés sous AppData via les API existantes, tout en permettant uniquement à Explorer et aux différentes boîtes de dialogue Ouvrir / Enregistrer de savoir où se trouve le "vrai" dossier Documents? Ou est-ce que des tentatives sont complètement inutiles ou même inutiles?


1 Pour mémoire, voici un bref résumé des divers répertoires standard à utiliser à la place de "Documents":

  • RoamingAppDatapour les données et les paramètres spécifiques à l'utilisateur. C'est le répertoire à utiliser pour les données non temporaires spécifiques à l'utilisateur. Tout ce qui est placé ici sera disponible sur n'importe quelle machine à laquelle un utilisateur donné se connecte sur des réseaux où cela est configuré. Ne placez pas de gros fichiers ici, car ils ralentissent la connexion / déconnexion dans de tels environnements.
  • LocalAppDatapour les données et les paramètres spécifiques à l' utilisateur et à la machine . Ces données diffèrent pour chaque utilisateur et chaque machine. C'est également à cet endroit que de très grandes données spécifiques à l'utilisateur doivent être placées.
  • ProgramDatapour les données et les paramètres spécifiques à la machine . Celles-ci sont les mêmes quel que soit l'utilisateur connecté et ne se déplacent pas vers d'autres machines du réseau.
  • GetTempPathpour tous les fichiers qui peuvent être effacés sans perte de données lorsqu'ils ne sont pas utilisés. C'est également l' endroit idéal pour les éléments tels que les caches , car, à l'instar des données temporaires, un cache n'a pas besoin d'être sauvegardé. Placez votre énorme cache ici et vous épargnerez à l'utilisateur quelques problèmes de sauvegarde.

« Documents » lui - même ne devrait jamais être utilisé si l'utilisateur spécifié manuellement en entrant un chemin ou en le sélectionnant dans une boîte de dialogue Enregistrer. C'est la seule fois qu'il est toujours appropriée pour sauver des choses dans « Documents ».


Discussion sur cette pensée devrait être prise à meta.PE .
Josh K

"Le système d'exploitation peut-il commencer à signaler un" faux "emplacement masqué sous AppData via les API existantes, tout en permettant uniquement à Explorer et aux différentes boîtes de dialogue Ouvrir / Enregistrer de savoir où se trouve le" vrai "dossier Documents?" Tout ce qui réduit le pouvoir des utilisateurs est mauvais. Et par utilisateurs, j'entends les utilisateurs qui savent programmer pour l'automatisation.
alternative le

1
Je ressens le besoin de préciser que le dossier Documents de tous mes ordinateurs est exempt de courrier indésirable, car j’exécute les boîtes Linux. Je sais que cela est étiqueté «Windows», mais nulle part dans ce discours glorifié n’avez-vous mentionné le système d’exploitation que vous utilisez.
Sevenseacat

1
Il est clair que le problème réside dans le fait que Microsoft permet que cela se produise et même qu’il le promette - consultez Visual Studio / SQL Server Management Studio. Une question intéressante est la suivante: existe-t-il un bon endroit pour critiquer Microsoft sur ce problème?
Chris Nevill

1
Les paramètres actuels de OneDrive aggravent encore la situation. Parce que cela définit le dossier Documents dans OneDrive (ce qui est en fait une bonne idée). Mais il ne me restait qu’une heure presque pas d’Internet, jusqu’à ce que j’ai remarqué que Xamarin pensait que ce serait une bonne idée de placer Android NDK dans mon dossier (OneDrive) Documents. Mes 3 autres ordinateurs synchronisés ont automatiquement téléchargé tous les fichiers. 1,9 Go ...
Matt

Réponses:


19

Il faudrait une incitation visible. Par exemple, si les utilisateurs devaient donner l'autorisation de sauvegarder dans le dossier Documents (au moment de l'installation), les programmeurs voudraient éviter de déclencher cette boîte de dialogue effrayante.

Une fois que vous avez obtenu cet avantage, les gens tomberont naturellement sur des documents tels que "Enregistrer les données de programme spécifiques à une machine dans ProgramData" tout en essayant de les résoudre.

En fait, beaucoup de problèmes pourraient être résolus par un joli framework de permissions ...


Cela ressemble un peu au sandbox Apple pour Mac OS X: vous ne pouvez enregistrer dans un emplacement arbitraire qu'en passant par une boîte de dialogue contrôlée par le système d'exploitation qui vous permet de sélectionner l'emplacement de sauvegarde. Si l'utilisateur clique sur OK, il ouvre le répertoire pour une utilisation ultérieure.
Laurent Bourgault-Roy

4

Ma question est la suivante: peut-on faire quelque chose pour améliorer la situation de manière à rendre les "documents" utiles à nouveau, par exemple dans les 5 prochaines années?

En théorie, quelque chose pourrait être fait. En théorie, Microsoft pourrait:

  • Trouvez un meilleur endroit pour mettre les fichiers de paramètres utilisateur (en même temps, sachant que de nombreuses applications ont des raisons valables de mettre des paramètres dans des fichiers).
  • Ajoutez ceci aux instructions standard pour les développeurs d'applications Windows. (Je suppose que de telles directives existent.)
  • Accordez une grande importance à la conformité des applications aux directives, par exemple via une sorte de certification ou en créant et en publiant des cartes de performance. "Nommer et faire honte" pourrait faire des merveilles ...

Il faut dire que Apple a toujours été beaucoup plus proactif avec ce genre de chose. Et cela se voit dans la qualité des choses qui fonctionnent sur leurs plateformes.


4
Il convient de noter que Microsoft est lui-même un gros délinquant (ou, du moins, certaines équipes de Microsoft sont de gros délinquants).
Peter Taylor

Totalement d'accord avec le "gros truc". En ce qui concerne un meilleur endroit - je pense que le profil itinérant n’est pas déjà mauvais, c’est juste que trop de gens ne le connaissent pas, ou pire, y ont mis d’énormes fichiers (2 Go +). Surtout des jeux ...
Roman Starkov

2

Je pense que vous répondez à la question en ce sens que cela se résume à l’éducation des programmeurs. Je ne connais pas suffisamment l'API Windows et il Documentsest particulièrement facile de stocker des éléments , mais sinon, les applications ne devraient pas les polluer. Je pense que cela revient à avoir un emplacement connu par utilisateur où les données peuvent résider. Pour le type de données dont vous parlez, Mac OS X utilise le ~/Librarydossier, même si certaines applications conservent encore des traces Documents. Peut-être que quelque chose de similaire devrait (existe-t-il?) Exister pour Windows.

Personnellement, je conserve mes documents dans un dossier du même nom, situé sous la racine de Dropbox, ce qui me demande un travail supplémentaire, mais me sauve du problème que vous avez soulevé.


2

Bien que je comprenne bien que vous souhaitiez engager une discussion pour inciter les développeurs à cesser de le faire, cela pourrait bien devenir l'une de ces choses telles que les icônes de notification de la barre des tâches qui ne pourraient pas être arrêtées, alors Microsoft les a balayées sous le tapis.

Auparavant, je bloguais sur le dossier Documents, le comparant à sortir d'un mauvais quartier . En tant qu’utilisateur, j’ai eu l’occasion de tenter de tout nettoyer moi-même. Je voudrais marquer tous les dossiers non invités comme "cachés" ce qui les ferait disparaître de l'Explorateur. Je créerais des liens symboliques pour les dossiers Visual Studio 2005, 2008 et 2010 dans un dossier "Visual Studio" commun, etc.

Mais même avec les scripts PowerShell pour l'automatiser, j'en ai eu marre de le faire sur toutes les nouvelles machines que j'utilisais. Heureusement, dans Windows 7, il existe une autre option qui fonctionne assez bien pour moi.

Comme Windows 7 tend à utiliser par défaut la bibliothèque "Documents" par opposition au dossier Documents. J'ai simplement supprimé le dossier% userprofile% \ documents de cette bibliothèque et ajouté mon dossier Dropbox. Alors maintenant, les boîtes de dialogue d'ouverture / enregistrement par défaut se positionnent à cet emplacement et lorsque je clique sur Démarrer -> Documents, cela me conduit à ma Dropbox.

En fin de compte, j'aimerais voir une sorte de certification de base pour des applications similaires aux directives de l'App Store iOS. Mais ils ne peuvent même pas obliger les fabricants de pilotes à signer leurs pilotes ...


1
En d'autres termes, vous pensez que rien ne peut être fait pour le sauver, mais c'est correct car de meilleures idées flottent autour de vous. +1
Roman Starkov

1

Je pense que la stratégie à long terme devrait être d'arrêter de stocker autre chose que des documents dans des fichiers. Les données système, en particulier les paramètres, doivent être stockées dans des systèmes de stockage qui ressemblent davantage à une base de données qu’un système de fichiers. Des points bonus si cette base de données peut être synchronisée facilement et automatiquement avec un service sur le Web. Vous disposez ainsi d'un ensemble de paramètres indépendamment du nombre d'ordinateurs que vous utilisez et de leur emplacement.

Je ne connais pas grand-chose de l'historique des systèmes de fichiers, mais il me semble que le système a été compris très tôt et que les fichiers exécutables sont une «chose» fondamentalement différente des documents. Donc, ceux-ci ont été rangés dans un dossier spécial (appelé alors répertoire) comme C:\DOSet l'utilisateur était essentiellement en contrôle du reste du lecteur.

Personne n'a vraiment prédit à quel point des systèmes beaucoup plus complexes et ingérables deviendraient au fil des années, et quel désordre cela créerait. Je pense qu'il est temps de repenser la technologie de fond en comble et de tirer parti de la synergie du cloud. Points bonus si une solution open source pratique décolle avant qu'une entreprise ne le fasse :)


3
Ne serait-il pas plus logique de faire le contraire, c'est-à-dire de ne stocker que les éléments système sous forme de fichiers et de disposer de données utilisateur dans des bases de données, en particulier si elles sont synchronisées via des services Web?
Roman Starkov

1
Hm, les détails ont certainement besoin d'être peaufinés ... mais ce que j'essayais de dire, c'est que seuls les documents en termes réels (c'est-à-dire les fichiers sur lesquels un utilisateur travaille qui n'ont rien à voir avec le système) s'adaptent vraiment dans la métaphore du fichier.
Timwi

De plus, je ne suis pas sûr que cela règle le problème. Si les programmes ont accès au système de stockage dédié aux documents utilisateur, ils peuvent toujours y placer leurs déchets. Ce qu’il faut, c’est quelque chose qui empêche les programmes de le faire, soit par des moyens techniques, soit en obligeant les programmeurs à s’arrêter volontairement.
Roman Starkov

Le registre était un tel système et cela n’avait pas si bien fonctionné. Je ne pense pas que l'approche appdata où les programmes stockent des fichiers avec leurs propres paramètres soit aussi mauvaise.
Pieter B

1

Même si certains programmes stockent encore des données dans Documents , je pense que la plupart d'entre eux stockent leurs données dans AppData . Ils vont donc déjà dans la bonne direction, mais les utilisateurs ne peuvent pas en faire beaucoup: chaque programme est responsable de son contenu. Est-ce que.


1
Je suis d'accord; les utilisateurs sont impuissants. Cela ne peut être résolu que par les programmeurs.
Roman Starkov

1

Solution:
1. Cliquez avec le bouton droit sur le dossier 'Documents' et sélectionnez l'onglet 'emplacement'.
2. Modifiez l'emplacement de "Documents" en un autre endroit. Choisissez "C: \ Admin \ Configs" (toutes les applications écrivant sur "documents" doivent alors être envoyées à C: \ Admin \ Configs).

Mais cela ne résout que la moitié du problème, la prochaine étape devrait être assez évidente.

  1. Créez un nouveau dossier dans 'C: \ User \\ Documentation'

Vous devriez alors pouvoir ajouter ce répertoire aux bibliothèques et supprimer l'ancien, j'ai volontairement défini un nom de dossier différent dans 'C: \ User \ ** Documentation **' car je voulais m'assurer que rien ne pouvait se trouver sous la main. dossier.

Si le dossier 'documents' apparaît à nouveau dans votre C: \ User \ à cause de ce qui précède, cliquez simplement sur le dossier avec le bouton droit de la souris et faites-en un dossier invisible.


0

L'enregistrement des paramètres dans un fichier texte est une solution inter plate-forme complète.

À moins que les développeurs ne créent un standard de base de données de paramètres multi-plateformes, je pense que la plupart d’entre nous continuerons à utiliser des fichiers texte vidés dans le répertoire utilisateur.

Ceux d'entre nous qui sont intelligents créeront différentes interfaces de paramètres pour les systèmes qui autorisent des moteurs de stockage de paramètres spécialisés (tels que le registre Windows).


1
Notez que le dossier "Documents" n'est pas le répertoire "utilisateur". Le dossier "Documents" est un sous-répertoire du répertoire de l'utilisateur, dont le but était supposé être l'endroit où l' utilisateur a sauvegardé ses propres documents. Le problème est que les programmes ont également décidé de placer leurs fichiers dans le dossier "Documents", même s'il existe de meilleurs emplacements (et documentés en tant que tels) pour les paramètres de programme.
Dean Harding le

1
C’est un bon exemple d’un chemin menant au mess Documents. Les gens portent un programme sans en savoir beaucoup sur Windows et déposent leurs données dans le premier répertoire qui leur vient à l’esprit. Il est probablement beaucoup plus facile de trouver "Documents" que de "AppData", d'autant plus que ce dernier implique de décider de le mettre dans le profil itinérant ou local - termes inconnus pour toute personne peu impliquée dans le développement Windows.
Roman Starkov

D'accord, et encore une fois - la vraie solution consiste à disposer d'un moteur de stockage standard multi-plateformes.
Craige

1
Ça n'arrivera pas. La question initiale concernait la rééducation de tous les programmeurs Windows et votre réponse était de rééduquer chaque programmeur. Vous n'allez pas non plus amener les programmeurs Unix / Linux à acheter dans une base de données de paramètres, car il existe de très bonnes raisons de les conserver sous forme de fichiers texte et vous devrez faire face à une résistance supplémentaire à l'égard de la manière de faire de Microsoft.
David Thornley
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.