Uso legítimo da pasta "Documentos" do Windows em programas

40

Qualquer pessoa que queira que a pasta Documentos contenha apenas as coisas que colocar lá sabe que a pasta Documentos padrão é completamente inadequada para esta tarefa. Todo programa parece querer colocar suas configurações, dados ou algo igualmente irrelevante na pasta Documentos , apesar do fato de haver pastas especificamente para este trabalho 1 .

Para que isso não pareça vazio, tome minha pasta pessoal "Documentos" como exemplo. Eu nunca o uso, pois nunca, em nenhuma circunstância, salvo qualquer coisa nessa pasta. E, no entanto, contém 46 pastas e 3 arquivos no nível superior, para um total de 800 arquivos em 500 pastas. São 190 MB de "documentos" que não criei. Obviamente, quaisquer documentos reais se perderiam imediatamente nessa bagunça.

Minha pergunta é : algo pode ser feito para melhorar a situação o suficiente para tornar os "Documentos" úteis novamente, digamos nos próximos 5 anos? Os programadores podem, de alguma forma, ser instruídos em massa para não usá-lo como um depósito de lixo? O sistema operacional pode começar a relatar um local "falso" oculto no AppData por meio das APIs existentes, permitindo apenas ao Explorer e às várias caixas de diálogo Abrir / Salvar saber onde reside a pasta "real" de documentos? Ou alguma tentativa é completamente inútil ou mesmo desnecessária?


1 Para o registro, aqui está um rápido resumo dos vários diretórios padrão que devem ser usados ​​em vez de "Documentos":

  • RoamingAppDatapara dados e configurações específicos do usuário . Este é o diretório a ser usado para dados não temporários específicos do usuário. Qualquer coisa colocada aqui estará disponível em qualquer máquina na qual um determinado usuário efetue logon nas redes em que isso estiver configurado. Porém, não coloque arquivos grandes aqui, pois eles diminuem a velocidade de login / logout nesses ambientes.
  • LocalAppDatapara dados e configurações específicos do usuário e da máquina . Esses dados diferem para cada usuário e cada máquina. É também aqui que dados grandes e específicos do usuário devem ser colocados.
  • ProgramDatapara dados e configurações específicos da máquina . Eles são os mesmos, independentemente de qual usuário está conectado, e não farão roaming para outras máquinas em uma rede.
  • GetTempPathpara todos os arquivos que podem ser limpos sem perda de dados quando não estiverem em uso. Este também é o lugar para coisas como caches , porque, como dados temporários, não é necessário fazer backup de um cache. Coloque seu enorme cache aqui e você poupará alguns problemas de backup.

"Documentos" em si só deve sempre ser usado se o usuário especificado-lo manualmente, digitando um caminho ou selecionando-o em uma caixa de diálogo Salvar. Essa é a única vez que ele é sempre apropriada para salvar o material em "Documentos".

Roman Starkov
fonte
Discussão sobre este pensamento deve ser levado para meta.PE .
21411 Josh K
"O sistema operacional pode começar a relatar algum local" falso "oculto no AppData por meio das APIs existentes, permitindo apenas ao Explorer e às várias caixas de diálogo Abrir / Salvar saber onde fica a pasta" real "de documentos?" Qualquer coisa que reduz o poder dos usuários é ruim. E por usuários, quero dizer usuários que sabem como programar para automação.
alternativa
11
Sinto a necessidade de esclarecer que a pasta Documentos em todos os meus computadores está livre de lixo, porque eu executo as caixas do Linux. Eu sei que isso está marcado como 'Windows', mas em nenhum lugar desse discurso glorificado você mencionou o SO que usa.
sevenseacat
11
Claramente, o problema aqui reside na Microsoft, permitindo que isso aconteça e até o prometa - veja o Visual Studio / SQL Server Management Studio. Uma pergunta interessante é: existe um bom lugar para reclamar com a Microsoft sobre esse problema?
Chris Nevill
11
As configurações atuais do OneDrive tornam isso ainda pior. Porque está definindo a pasta Documents no OneDrive (o que é realmente uma boa ideia). Mas eu só tinha 1 hora quase sem internet, até perceber que o Xamarin achou que seria uma boa ideia colocar o Android NDK na minha pasta Documentos (OneDrive). Meus outros 3 computadores sincronizados baixaram automaticamente todos os arquivos. 1,9 GB ...
Matt

Respostas:

19

Teria de haver algum incentivo visível. Por exemplo, se os usuários precisassem fornecer permissão para salvar na pasta Documentos (no momento da instalação), os programadores evitariam acionar essa caixa de diálogo assustadora.

Uma vez que você tenha o incentivo, as pessoas naturalmente encontrarão documentação como "Salvar dados do programa específicos da máquina no ProgramData" enquanto tentam resolvê-lo.

Na verdade, muitos problemas podem ser resolvidos por uma boa estrutura de permissões ...

Craig Gidney
fonte
Soa um pouco como a caixa de proteção da Apple para Mac OS X: você só pode salvar em um local arbitrário através de uma caixa de diálogo Controlada pelo SO que permite selecionar o local para salvar. Se o usuário clicar em OK, desbloqueia o diretório para uso futuro.
Laurent Bourgault-Roy
4

Minha pergunta é: algo pode ser feito para melhorar a situação o suficiente para tornar os "Documentos" úteis novamente, digamos nos próximos 5 anos?

Em teoria, algo poderia ser feito. Em teoria, a Microsoft poderia:

  • Crie um local melhor para colocar arquivos de configuração do usuário (no processo, reconhecendo que muitos aplicativos têm motivos válidos para colocar configurações nos arquivos).
  • Adicione isso às diretrizes padrão de desenvolvedor de aplicativos do Windows. (Presumo que essas diretrizes existam.)
  • Faça uma coisa importante sobre a conformidade dos aplicativos com as diretrizes, por exemplo, através de algum tipo de certificação ou criando e publicando scorecards de conformidade. "Nomear e envergonhar" poderia fazer maravilhas ...

É preciso dizer que a Apple tem sido muito mais proativa com esse tipo de coisa. E isso mostra a qualidade das coisas que são executadas em suas plataformas.

Stephen C
fonte
4
Vale a pena notar que a Microsoft é uma grande ofensora (ou, pelo menos, algumas equipes da Microsoft são grandes ofensoras).
Peter Taylor
Concordo totalmente com o ponto "grande coisa". Quanto a um lugar melhor - acho que o perfil de roaming já não é muito ruim, é que existem muitas pessoas que não o conhecem, ou pior, colocam arquivos enormes (2 GB +) nele. Especialmente jogos ...
Roman Starkov
2

Acho que você responde à pergunta na medida em que ela se resume à educação de programadores. Eu não sei o suficiente sobre a API do Windows e se o armazenamento de coisas Documentsé particularmente fácil, mas se não, os aplicativos não devem poluí-lo. Eu acho que tudo se resume a ter um local conhecido por usuário onde os dados podem residir. Para os tipos de dados sobre os quais você fala, o Mac OS X usa a ~/Librarypasta, embora alguns aplicativos ainda sigam o exemplo Documents. Talvez algo semelhante deva existir (para o Windows).

Pessoalmente, mantenho meus documentos em uma pasta com o mesmo título na raiz do Dropbox, o que adiciona um nível extra de trabalho para mim, mas me salva do problema que você levantou.

roguesys
fonte
2

Embora eu entenda que você deseja se envolver em uma discussão sobre como fazer com que os desenvolvedores parem de fazer isso, isso pode acabar se tornando uma daquelas coisas, como ícones de notificação da barra de tarefas que não podiam ser interrompidos, de modo que a Microsoft simplesmente os colocou debaixo do tapete.

Eu escrevi anteriormente sobre a pasta Documentos, comparando-a a sair de um bairro ruim . Como usuário, criei vários hacks para tentar limpá-lo por conta própria. Marcaria todas as pastas não convidadas como "ocultas", o que as faria desaparecer do Explorer. Eu criaria links simbólicos para pastas do Visual Studio 2005, 2008, 2010 em uma pasta "Visual Studio" comum etc.

Mas, mesmo com os scripts do PowerShell para automatizá-lo, eu cansei de fazê-lo em todas as novas máquinas que usei. Felizmente, no Windows 7, há outra opção que funciona muito bem para mim.

Como o Windows 7 tende a usar como padrão a biblioteca "Documentos" , em vez da pasta Documentos. Simplesmente removi a pasta% userprofile% \ documents desta biblioteca e adicionei minha pasta do Dropbox. Então agora abra / salve as caixas de diálogo padrão nesse local e, quando clico em Iniciar -> Documentos, ele me leva ao meu Dropbox.

Por fim, eu adoraria ver algum tipo de certificação básica para aplicativos semelhantes às diretrizes da iOS App Store. Mas eles nem conseguem que os fabricantes de drivers assinem seus drivers ...

Josh
fonte
11
Então, em outras palavras, você acha que nada pode ser feito para salvá-lo, mas tudo bem, porque há idéias melhores por aí. +1.
Roman Starkov 23/02
1

Eu acho que a estratégia de longo prazo deve ser parar de armazenar qualquer coisa que não seja documentos em arquivos. Os dados do sistema, especialmente as configurações, devem ser armazenados em sistemas de armazenamento que se assemelham mais a um banco de dados que a um sistema de arquivos. Pontos extras se esse banco de dados puder ser fácil e automaticamente sincronizado com um serviço na Web, para que você tenha efetivamente um conjunto de configurações, independentemente de quantos computadores você usa e onde.

Não sei muito sobre a história dos sistemas de arquivos, mas parece-me que isso foi percebido bem cedo nesse sistema e que os arquivos executáveis ​​são uma "coisa" fundamentalmente diferente dos documentos. Então eles foram guardados em uma pasta especial (então chamada diretório) C:\DOSe o usuário estava basicamente no controle do resto da unidade.

Ninguém realmente previu quanto sistemas mais complexos e incontroláveis ​​se tornariam ao longo dos anos e que confusão isso faria. Acho que é hora de repensar a tecnologia desde o início e alavancar a sinergia da nuvem. Pontos de bônus se uma solução de código aberto viável decolar antes que a empresa o faça :)

Timwi
fonte
3
Não faria mais sentido fazer o oposto, ou seja, armazenar apenas coisas do sistema como arquivos e ter dados do usuário disponíveis nos bancos de dados, especialmente se sincronizados por meio de serviços da web?
Roman Starkov 15/02
11
Hm, os detalhes certamente precisam ser aprofundados ... mas o ponto real que eu estava tentando destacar é que apenas documentos em termos reais (ou seja, arquivos nos quais um usuário realmente trabalha que não têm nada a ver com a execução do sistema) realmente se encaixam na metáfora do arquivo.
Timwi
Além disso, não tenho certeza se isso soluciona o problema. Se os programas tiverem acesso ao sistema de armazenamento dedicado aos documentos do usuário, eles ainda poderão colocar seu lixo lá. O que é necessário é algo que interrompa os programas, seja por meios técnicos ou fazendo com que os programadores parem voluntariamente.
Roman Starkov 15/02
O registro era um sistema desse tipo e não funcionou tão bem. Eu não acho que a abordagem appdata em que os programas armazenam arquivos com suas próprias configurações seja tão ruim.
precisa
1

Mesmo que algum programa ainda armazene alguns dados no Documents , acho que a maioria armazena seus dados no AppData , então eles já estão indo na direção certa, no entanto, não há muito o que os usuários possam fazer: cada programa é responsável por isso. faz.

picos selvagens
fonte
11
Concordo; os usuários estão desamparados. Isso só pode ser resolvido por programadores.
Roman Starkov 16/02
1

Solução:
1. Clique com o botão direito do mouse na pasta 'Documentos' e selecione a guia 'local'.
2. Altere o local 'Documents' para outro local. Escolha 'C: \ Admin \ Configs' (depois que isso for feito, todos os aplicativos gravados em 'documents' deverão ser enviados para C: \ Admin \ Configs.

Mas isso resolve apenas metade do problema, o próximo passo deve ser bastante óbvio.

  1. Crie uma nova pasta em 'C: \ User \\ Documentation'

Você deve poder adicionar esse diretório às bibliotecas e excluir o antigo. Defini deliberadamente um nome de pasta diferente em 'C: \ User \ ** Documentation **' porque eu queria garantir que nada poderia ser um caminho difícil para isso. pasta.

Caso a pasta 'documentos' apareça novamente em seu C: \ Usuário \ devido ao fato acima, basta clicar com o botão direito do mouse na pasta e torná-la uma pasta invisível.

Interior
fonte
0

Armazenar configurações em um arquivo de texto é uma solução abrangente para várias plataformas.

A menos que os desenvolvedores criem um padrão de banco de dados de configurações entre plataformas, acho que a maioria de nós continuará usando arquivos de texto despejados no diretório do usuário.

Aqueles que são inteligentes criarão interfaces de configurações diferentes para sistemas que permitem mecanismos de armazenamento de configurações especializados (como o Registro do Windows).

Craige
fonte
11
Observe que a pasta "Documentos" não é o diretório "usuário". A pasta "Documentos" é um subdiretório do diretório do usuário, cuja intenção deveria ser onde o usuário salvou seus próprios documentos. O problema é que os programas decidiram colocar suas coisas na pasta "Documentos" também, embora existam lugares melhores (e documentados como tal) para as configurações do programa.
22611 Dean Harding
11
Este é um bom exemplo de um caminho para a bagunça de documentos. As pessoas portam um programa sem conhecer muito sobre o Windows e colocam suas coisas no primeiro diretório que vem à mente. Provavelmente é muito mais fácil encontrar "Documentos" do que encontrar "AppData", especialmente porque o último envolve decidir se o inserirá no perfil móvel ou local - termos desconhecidos para qualquer pessoa que não esteja profundamente envolvida no desenvolvimento do Windows.
Roman Starkov 16/02
Concordou, e mais uma vez - a verdadeira solução é ter um padrão mecanismo de armazenamento configurações multi-plataforma.
Craige 16/02
11
Não vai acontecer. A pergunta original é sobre reeducar todos os programadores do Windows, e sua resposta é reeducar todos os programadores. Você também não vai conseguir que programadores Unix / Linux comprem em um banco de dados de configurações, porque existem boas razões para deixá-los como arquivos de texto e você terá resistência adicional para fazer as coisas da maneira da Microsoft.
David Thornley