Uso legítimo de la carpeta "Documentos" de Windows en programas

40

Cualquiera a quien le guste que su carpeta Documentos contenga solo cosas que coloque allí sabe que la carpeta Documentos estándar es completamente inadecuada para esta tarea. Cada programa parece querer poner su configuración, datos o algo igualmente irrelevante en la carpeta Documentos , a pesar de que hay carpetas específicamente para este trabajo 1 .

Para que esto no suene vacío, tome mi carpeta personal "Documentos" como ejemplo. Ni nunca lo uso, en la que nunca, bajo ninguna circunstancia, guardar nada en esta carpeta a mí mismo. Y, sin embargo, contiene 46 carpetas y 3 archivos en el nivel superior, para un total de 800 archivos en 500 carpetas. Eso es 190 MB de "documentos" que no creé. Obviamente, cualquier documento real se perdería de inmediato en este desastre.

Mi pregunta es : ¿se puede hacer algo para mejorar la situación lo suficiente como para que los "Documentos" sean útiles nuevamente, digamos en los próximos 5 años? ¿Pueden los programadores ser educados en masa para no usarlo como vertedero? ¿Podría el sistema operativo comenzar a informar alguna ubicación "falsa" oculta bajo AppData a través de las API existentes, mientras solo permite que Explorer y los diversos cuadros de diálogo Abrir / Guardar sepan dónde reside la carpeta de documentos "real"? ¿O hay intentos completamente inútiles o incluso innecesarios?


1 Para el registro, aquí hay un resumen rápido de los diversos directorios estándar que deben usarse en lugar de "Documentos":

  • RoamingAppDatapara datos y configuraciones específicas del usuario . Este es el directorio a utilizar para datos no temporales específicos del usuario. Todo lo que se coloque aquí estará disponible en cualquier máquina en la que un usuario determinado inicie sesión en redes donde esté configurado. Sin embargo, no coloque archivos grandes aquí, porque ralentizan el inicio / cierre de sesión en dichos entornos.
  • LocalAppDatapara datos y configuraciones específicas de usuario y máquina . Estos datos difieren para cada usuario y cada máquina. Aquí también es donde se deben colocar datos muy grandes específicos del usuario.
  • ProgramDatapara datos y configuraciones específicas de la máquina . Estos son los mismos independientemente del usuario que haya iniciado sesión y no se desplazarán a otras máquinas en una red.
  • GetTempPathpara todos los archivos que pueden borrarse sin pérdida de datos cuando no están en uso. Este es también el lugar para cosas como cachés , porque al igual que los datos temporales, no es necesario hacer una copia de seguridad de un caché. Coloque su enorme caché aquí y le ahorrará a su usuario algunos problemas de copia de seguridad.

"Documentos" en sí mismo sólo deben nunca ser utilizados si el usuario ha especificado manualmente mediante la introducción de una ruta o seleccionándolo en un cuadro de diálogo Guardar. Esa es la única vez que se Alguna vez apropiada para guardar cosas en "Documentos".

Roman Starkov
fuente
La discusión sobre este pensamiento debe ser llevado a meta.PE .
Josh K
"¿Podría el sistema operativo comenzar a informar alguna ubicación" falsa "oculta bajo AppData a través de las API existentes, al tiempo que solo permite que Explorer y los diversos cuadros de diálogo Abrir / Guardar sepan dónde reside la carpeta de documentos" real "? Cualquier cosa que reduzca el poder de los usuarios es mala. Y por usuarios me refiero a usuarios que saben programar para la automatización.
alternativa
1
Siento la necesidad de aclarar que la carpeta Documentos en todas mis computadoras está libre de basura, porque ejecuto cajas de Linux. Sé que esto está etiquetado como 'Windows', pero en ninguna parte de este discurso glorificado mencionaste qué sistema operativo utilizas.
sevenseacat
1
Claramente, el problema aquí radica en que Microsoft permite que esto suceda e incluso lo promete: mire Visual Studio / SQL Server Management Studio. Una pregunta interesante es: ¿hay un buen lugar para despotricar en Microsoft sobre este problema?
Chris Nevill
1
La configuración actual de OneDrive lo empeora aún más. Porque está configurando la carpeta Documentos dentro de OneDrive (que en realidad es una buena idea). Pero solo tuve 1 hora casi sin internet, hasta que noté que Xamarin pensó que sería una buena idea insertar Android NDK en mi carpeta de documentos (OneDrive). Mis otras 3 computadoras sincronizadas descargaron automáticamente todos los archivos. 1.9 GB ...
Matt

Respuestas:

19

Tendría que haber algún incentivo visible. Por ejemplo, si los usuarios tuvieran que proporcionar permiso para guardar en la carpeta Documentos (en el momento de la instalación), los programadores desearían evitar activar ese diálogo aterrador.

Una vez que tenga el incentivo, la gente tropezará naturalmente con documentación como "Guardar datos de programa específicos de la máquina en ProgramData" mientras intenta resolverlo.

En realidad, un buen marco de permisos podría resolver muchos problemas ...

Craig Gidney
fuente
Suena un poco como el sandbox de Apple para Mac OS X: solo puede guardar en una ubicación arbitraria a través de un cuadro de diálogo Controlado por el sistema operativo que le permite seleccionar la ubicación de guardado. Si el usuario hace clic en Aceptar, desbloquea el directorio para uso futuro.
Laurent Bourgault-Roy
4

Mi pregunta es: ¿se puede hacer algo para mejorar la situación lo suficiente como para que los "Documentos" sean útiles nuevamente, digamos en los próximos 5 años?

En teoría, se podría hacer algo. En teoría, Microsoft podría:

  • Encuentre un mejor lugar para colocar los archivos de configuración del usuario (en el proceso, reconociendo que muchas aplicaciones tienen validez razones para colocar configuraciones en los archivos).
  • Agregue esto a las pautas estándar para desarrolladores de aplicaciones de Windows. (Supongo que tales pautas existen).
  • Haga algo importante sobre la conformidad de las aplicaciones con las pautas, por ejemplo, mediante algún tipo de certificación o mediante la creación y publicación de cuadros de mando de conformidad. "Nombrar y avergonzar" podría hacer maravillas ...

Hay que decir que Apple ha sido tradicionalmente mucho más proactiva con este tipo de cosas. Y se nota en la calidad de las cosas que se ejecutan en sus plataformas.

Stephen C
fuente
44
Vale la pena señalar que Microsoft es un gran delincuente en sí mismo (o, al menos, algunos equipos de Microsoft son grandes delincuentes).
Peter Taylor
Totalmente de acuerdo con el punto "gran cosa". En cuanto a un lugar mejor, creo que el perfil de roaming ya no es tan malo, es solo que hay demasiadas personas que no lo saben, o peor aún, ponen archivos enormes (2GB +) allí. Especialmente juegos ...
Roman Starkov
2

Creo que respondes la pregunta porque se reduce a la educación del programador. No sé lo suficiente sobre la API de Windows y si almacenar cosas Documentses particularmente fácil, pero si no, las aplicaciones no deberían contaminarlo. Creo que se trata de tener una ubicación conocida por usuario donde puedan residir los datos. Para el tipo de datos de los que habla, Mac OS X usa la ~/Librarycarpeta, aunque algunas aplicaciones aún mantienen las cosas debajo Documents. Tal vez algo similar debería (¿existe?) Para Windows.

Personalmente, mantengo mis Documentos en una carpeta con el mismo título debajo de mi raíz de Dropbox, lo que agrega un nivel adicional de trabajo para mí, pero me salva del problema que ha planteado.

roguesys
fuente
2

Aunque entiendo que desea entablar una discusión sobre cómo lograr que los desarrolladores dejen de hacer esto, podría terminar convirtiéndose en una de esas cosas, como los iconos de notificación de la barra de tareas que no se pudieron detener, por lo que Microsoft simplemente los barrió bajo la alfombra.

Anteriormente escribí en un blog sobre la carpeta Documentos, comparándola con mudarse de un vecindario malo . Como usuario, se me ocurrió un montón de trucos para tratar de limpiarlo por mi cuenta. Marcaría todas las carpetas no invitadas como "ocultas", lo que las haría desaparecer del Explorador. Crearía enlaces simbólicos para las carpetas de Visual Studio 2005, 2008, 2010 en una carpeta común de "Visual Studio", etc.

Pero incluso con los scripts de PowerShell para automatizarlo, me cansé de hacerlo en cada nueva máquina que usaba. Afortunadamente, en Windows 7 hay otra opción que me funciona bastante bien.

Dado que Windows 7 tiende a la configuración predeterminada de la biblioteca "Documentos" en lugar de la carpeta Documentos. Simplemente eliminé la carpeta% userprofile% \ documents de esta biblioteca y en su lugar agregué mi carpeta de Dropbox. Así que ahora abre / guarda los cuadros de diálogo predeterminados para esta ubicación y cuando hago clic en Inicio -> Documentos, me lleva a mi Dropbox.

En última instancia, me encantaría ver algún tipo de certificación básica para aplicaciones similares a las pautas de iOS App Store. Pero ni siquiera pueden hacer que los fabricantes de controladores firmen sus controladores ...

Josh
fuente
1
En otras palabras, cree que no se puede hacer nada para salvarlo, pero está bien porque hay mejores ideas flotando. +1.
Roman Starkov
1

Creo que la estrategia a largo plazo debería ser dejar de almacenar cualquier otra cosa que no sean documentos en archivos. Datos del sistema, especialmente configuración, deben almacenarse en sistemas de almacenamiento que se parezcan más a una base de datos que a un sistema de archivos. Puntos de bonificación si esa base de datos se puede sincronizar fácil y automáticamente con un servicio en la web, por lo que efectivamente tiene un conjunto de configuraciones independientemente de cuántas computadoras use y dónde.

No sé mucho sobre la historia de los sistemas de archivos, pero me parece que se dio cuenta bastante temprano de ese sistema y que los archivos ejecutables son una "cosa" fundamentalmente diferente a los documentos. Entonces esos se guardaron en una carpeta especial (luego llamada directorio) comoC:\DOS y el usuario tenía básicamente el control del resto de la unidad.

Nadie predijo realmente cuánto se volverían sistemas más complejos e inmanejables a lo largo de los años y qué desorden haría esto. Creo que es hora de repensar la tecnología desde cero y aprovechar la sinergia de la nube. Puntos de bonificación si una solución de código abierto viable despega antes de que una empresa lo haga :)

Timwi
fuente
3
¿No tendría más sentido hacer lo contrario, es decir, almacenar solo cosas del sistema como archivos y tener datos de usuario disponibles en bases de datos, especialmente si se sincronizan a través de servicios web?
Roman Starkov
1
Hm, los detalles ciertamente necesitan un poco de desarrollo ... pero el punto real que estaba tratando de hacer es que solo los documentos en el término real (es decir, archivos en los que un usuario realmente trabaja que no tienen nada que ver con la ejecución del sistema) realmente encajan en la metáfora del archivo.
Timwi
Además, no estoy seguro de que esto resuelva el problema. Si los programas tienen acceso al sistema de almacenamiento dedicado a documentos de usuario, aún pueden poner su basura allí. Lo que se requiere es algo que impida que los programas hagan esto, ya sea a través de medios técnicos o haciendo que los programadores se detengan voluntariamente.
Roman Starkov
El registro era un sistema así y no funcionó tan bien. No creo que el enfoque de appdata donde los programas almacenan archivos con su propia configuración sea tan malo.
Pieter B
1

Incluso si algún programa aún almacena algunos datos en Documentos , creo que la mayoría almacena sus datos en AppData , por lo que ya están yendo en la dirección correcta, sin embargo, no hay mucho que los usuarios puedan hacer: cada programa es responsable de lo que hace.

picos salvajes
fuente
1
Estoy de acuerdo; Los usuarios están indefensos. Esto solo puede ser resuelto por los programadores.
Roman Starkov
1

Solución:
1. Haga clic con el botón derecho en la carpeta 'Documentos' y seleccione la pestaña 'ubicación'.
2. Cambie la ubicación de 'Documentos' a otro lugar. Elijo 'C: \ Admin \ Configs' (una vez hecho esto, todas las aplicaciones que escriban en 'documentos' deberían enviarse a C: \ Admin \ Configs).

Pero esto resuelve solo la mitad del problema, el siguiente paso debería ser bastante obvio.

  1. Cree una nueva carpeta en 'C: \ User \\ Documentation'

Entonces debería poder agregar ese directorio a las bibliotecas y eliminar el antiguo, deliberadamente configuré un nombre de carpeta diferente en 'C: \ Usuario \ ** Documentación **' porque quería asegurarme de que nada podría dificultar el camino hacia ese carpeta.

Si la carpeta 'documentos' aparece nuevamente en su C: \ Usuario \ debido al hecho anterior, simplemente haga clic derecho en la carpeta y conviértala en una carpeta invisible.

Interior
fuente
0

Almacenar la configuración en un archivo de texto es una solución multiplataforma general.

A menos que los desarrolladores creen un estándar de base de datos de configuraciones multiplataforma, creo que la mayoría de nosotros seguiremos usando archivos de texto volcados al directorio del usuario.

Aquellos de nosotros que somos inteligentes crearemos diferentes interfaces de configuración para sistemas que permiten motores de almacenamiento de configuraciones especializadas (como el Registro de Windows).

Craige
fuente
1
Tenga en cuenta que la carpeta "Documentos" no es el directorio "usuario". La carpeta "Documentos" es un subdirectorio del directorio del usuario, cuya intención se suponía que era donde el usuario guardaba sus propios documentos. El problema es que los programas decidieron poner sus cosas en la carpeta "Documentos" también, a pesar de que hay lugares mejores (y documentados como tales) para la configuración del programa.
Dean Harding
1
Este es un buen ejemplo de un camino hacia el desorden de Documentos. Las personas portan un programa sin saber mucho acerca de Windows, y vuelcan sus cosas en el primer directorio que les viene a la mente. Probablemente sea mucho más fácil encontrar "Documentos" que encontrar "AppData", especialmente porque este último implica decidir si se debe colocar en el perfil móvil o local, términos desconocidos para cualquiera que no esté profundamente involucrado con el desarrollo de Windows.
Roman Starkov
De acuerdo, y de nuevo, la solución real es tener un motor de almacenamiento de configuraciones multiplataforma estándar .
Craige
1
No va a pasar. La pregunta original es sobre reeducar a todos los programadores de Windows, y su respuesta es reeducar a cada programador. Tampoco vas a conseguir que los programadores de Unix / Linux compren en una base de datos de configuración, porque hay muy buenas razones para dejarlos como archivos de texto, y enfrentarás una resistencia adicional para hacer las cosas a la manera de Microsoft.
David Thornley