Uso legittimo della cartella "Documenti" di Windows nei programmi


40

Chiunque preferisca che la propria cartella Documenti contenga solo le cose che mette lì sa che la cartella Documenti standard non è completamente adatta a questa attività. Ogni programma sembra voler mettere le sue impostazioni, i suoi dati o qualcosa di altrettanto irrilevante nella cartella Documenti , nonostante ci siano cartelle specifiche per questo lavoro 1 .

Affinché ciò non sembri vuoto, prendi la mia cartella "Documenti" personale come esempio. Non lo uso mai , in quanto non ho mai, in nessun caso, salvato nulla in questa cartella. Eppure, contiene 46 cartelle e 3 file al livello superiore, per un totale di 800 file in 500 cartelle. Sono 190 MB di "documenti" che non ho creato. Ovviamente qualsiasi documento reale verrebbe immediatamente perso in questo pasticcio.

La mia domanda è : si può fare qualcosa per migliorare sufficientemente la situazione per rendere di nuovo utile "Documenti", diciamo nei prossimi 5 anni? I programmatori possono in qualche modo essere educati in massa a non usarlo come discarica? Il sistema operativo potrebbe iniziare a segnalare una posizione "falsa" nascosta in AppData attraverso le API esistenti, consentendo solo a Explorer e alle varie finestre di dialogo Apri / Salva di sapere dove risiede la cartella "reale" dei documenti? O qualche tentativo è completamente inutile o addirittura inutile?


1 Per la cronaca, ecco un breve riassunto delle varie directory standard che dovrebbero essere usate al posto di "Documenti":

  • RoamingAppDataper dati e impostazioni specifici dell'utente. Questa è la directory da utilizzare per i dati non temporanei specifici dell'utente. Tutto ciò che viene inserito qui sarà disponibile su qualsiasi macchina a cui un determinato utente accede nelle reti in cui è configurato. Non posizionare qui file di grandi dimensioni, poiché rallentano l'accesso / il logout in tali ambienti.
  • LocalAppDataper specifici dell'utente e della macchina dati e impostazioni . Questi dati differiscono per ogni utente e ogni macchina. Questo è anche il luogo in cui dovrebbero essere inseriti dati specifici dell'utente molto grandi.
  • ProgramDataper dati e impostazioni specifici della macchina . Questi sono gli stessi indipendentemente da quale utente ha effettuato l'accesso e non effettueranno il roaming su altre macchine in una rete.
  • GetTempPathper tutti i file che possono essere cancellati senza perdita di dati quando non in uso. Questo è anche il posto per cose come le cache , perché come i dati temporanei, non è necessario eseguire il backup di una cache. Inserisci qui la tua enorme cache e risparmierai al tuo utente qualche problema di backup.

Lo stesso "Documento" dovrebbe essere sempre usato solo se l'utente lo ha specificato manualmente inserendo un percorso o selezionandolo in una finestra di dialogo Salva. Questa è l'unica volta in cui è sempre appropriato salvare cose in "Documenti".


La discussione su questo pensiero dovrebbe essere presa per meta.PE .
Josh K,

"Il sistema operativo potrebbe iniziare a segnalare una posizione" falsa "nascosta in AppData attraverso le API esistenti, consentendo solo a Explorer e alle varie finestre di dialogo Apri / Salva di sapere dove risiede la cartella" reale "di Documenti?" Tutto ciò che riduce il potere degli utenti è negativo. E per utenti intendo utenti che sanno programmare per l'automazione.
alternativa il

1
Sento la necessità di chiarire che la cartella Documenti su tutti i miei computer è priva di spazzatura, perché eseguo Linux box. So che questo è etichettato 'Windows', ma da nessuna parte in questo glorificato rant hai menzionato quale sistema operativo usi.
sevenseacat,

1
Chiaramente il problema qui sta con Microsoft che consente che ciò accada e persino lo promuove - guarda Visual Studio / SQL Server Management Studio. Una domanda interessante è: esiste un buon posto in cui rivolgersi a Microsoft per questo problema?
Chris Nevill,

1
Le attuali impostazioni di OneDrive lo rendono ancora peggio. Perché sta impostando la cartella Documenti all'interno di OneDrive (che in realtà è una bella idea). Ma ho avuto solo 1 ora quasi senza internet, fino a quando ho notato che Xamarin pensava che sarebbe stata una buona idea spingere Android NDK nella mia cartella dei documenti (OneDrive). I miei altri 3 computer sincronizzati hanno scaricato automaticamente tutti i file. 1,9 GB ...
Matt,

Risposte:


19

Ci dovrebbe essere qualche incentivo visibile. Ad esempio, se gli utenti dovessero fornire l'autorizzazione per salvare nella cartella Documenti (al momento dell'installazione), i programmatori vorrebbero evitare di attivare quella spaventosa finestra di dialogo.

Una volta che hai l'incentivo, le persone si imbatteranno naturalmente in documentazione come "Salva i dati del programma specifici della macchina in ProgramData" mentre tentano di risolverlo.

In realtà, molti problemi potrebbero essere risolti da un bel framework di autorizzazioni ...


Assomiglia un po 'alla sandbox di Apple per Mac OS X: puoi salvare in una posizione arbitraria solo attraverso una finestra di dialogo Controllata dal sistema operativo che ti consente di selezionare la posizione di salvataggio. Se l'utente fa clic su OK, sbloccherà la directory per uso futuro.
Laurent Bourgault-Roy,

4

La mia domanda è: si può fare qualcosa per migliorare sufficientemente la situazione per rendere di nuovo utile "Documenti", diciamo nei prossimi 5 anni?

In teoria, si potrebbe fare qualcosa. In teoria Microsoft potrebbe:

  • Trova un posto migliore per inserire i file delle impostazioni dell'utente (nel processo, riconoscendo che molte applicazioni hanno validi motivi per inserire le impostazioni nei file).
  • Aggiungi questo alle linee guida standard per sviluppatori di applicazioni Windows. (Presumo che tali linee guida esistano.)
  • Fai una grande cosa sulla conformità delle applicazioni alle linee guida, ad esempio tramite un qualche tipo di certificazione o creando e pubblicando scorecard di conformità. "Naming and shaming" potrebbe fare miracoli ...

Va detto che Apple è stata tradizionalmente molto più proattiva con questo tipo di cose. E mostra la qualità delle cose che girano sulle loro piattaforme.


4
Vale la pena notare che Microsoft è un grande offensore stesso (o, almeno, alcuni team Microsoft sono grandi trasgressori).
Peter Taylor,

Totalmente d'accordo con il punto "grande cosa". Per quanto riguarda un posto migliore, penso che il profilo di roaming non sia già così male, è solo che ci sono troppe persone che non lo conoscono, o peggio, ci mettono enormi file (2 GB +). Soprattutto i giochi ...
Roman Starkov,

2

Penso che tu risponda alla domanda in quanto si riduce alla formazione del programmatore. Non so abbastanza dell'API di Windows e se archiviare le cose Documentsè particolarmente facile, ma in caso contrario le applicazioni non dovrebbero inquinarle. Penso che si tratti di avere una posizione nota per utente in cui i dati possono risiedere. Per il tipo di dati di cui parli, Mac OS X utilizza la ~/Librarycartella, anche se alcune app continuano a contenere le cose Documents. Forse qualcosa di simile dovrebbe (esiste?) Esistere per Windows.

Personalmente, tengo i miei documenti su una cartella con lo stesso titolo nella mia root di Dropbox, il che aggiunge un ulteriore livello di lavoro per me, ma mi salva dal problema che hai sollevato.


2

Anche se capisco che vuoi impegnarti in una discussione su come far smettere agli sviluppatori di farlo, potrebbe finire per diventare una di quelle cose come le icone di notifica sulla barra delle applicazioni che non possono essere fermate, quindi Microsoft le ha semplicemente spazzate via.

In precedenza ho scritto un blog sulla cartella Documenti, paragonandola al trasferimento da un brutto quartiere . Come utente, ho escogitato un sacco di hack per aver provato a ripulirlo da solo. Vorrei contrassegnare tutte le cartelle non invitate come "nascoste" che le farebbero scomparire da Explorer. Vorrei creare collegamenti simbolici per le cartelle di Visual Studio 2005, 2008, 2010 in una cartella "Visual Studio" comune, ecc.

Ma anche con gli script di PowerShell per automatizzarlo, mi sono stancato di farlo su ogni nuova macchina che ho usato. Fortunatamente, in Windows 7 c'è un'altra opzione che funziona abbastanza bene per me.

Poiché Windows 7 tende a impostare automaticamente la libreria "Documenti" anziché la cartella Documenti. Ho semplicemente rimosso la cartella% userprofile% \ documents da questa libreria e invece ho aggiunto la mia cartella Dropbox. Quindi ora apro / salva le finestre di dialogo predefinite in questa posizione e quando faccio clic su Start -> Documenti, mi porta sul mio Dropbox.

Alla fine, mi piacerebbe vedere una sorta di certificazione di base per app simili alle linee guida dell'App Store per iOS. Ma non possono nemmeno convincere i produttori di driver a firmare i loro driver ...


1
Quindi, in altre parole, pensi che non si possa fare nulla per salvarlo, ma va bene perché ci sono idee migliori che fluttuano intorno. +1.
Roman Starkov,

1

Penso che la strategia a lungo termine dovrebbe essere quella di smettere di archiviare qualsiasi cosa diversa dai documenti nei file. Dati di sistema, in particolare impostazioni, devono essere archiviati in sistemi di archiviazione che assomigliano a un database più che a un file system. Punti bonus se quel database può essere sincronizzato facilmente e automaticamente con un servizio sul Web, in modo da avere effettivamente una serie di impostazioni indipendentemente dal numero di computer che usi e da dove.

Non so molto sulla storia dei file system, ma mi sembra che sia stato realizzato abbastanza presto su quel sistema e che i file eseguibili siano una "cosa" fondamentalmente diversa dai documenti. Quindi quelli sono stati riposti in una cartella speciale (quindi chiamata directory) comeC:\DOS e l'utente era sostanzialmente in controllo del resto dell'unità.

Nessuno predisse davvero quanto sarebbero diventati sistemi più complessi e ingestibili nel corso degli anni e che disastro avrebbe fatto. Penso che sia tempo di ripensare la tecnologia dai fondali e sfruttare la sinergia del cloud. Punti bonus se una soluzione open source realizzabile decolla prima che un'azienda lo faccia :)


3
Non avrebbe più senso fare il contrario, ovvero archiviare solo file di sistema come file e disporre dei dati degli utenti nei database, soprattutto se sincronizzati tramite i servizi Web?
Roman Starkov,

1
Hm, i dettagli hanno sicuramente bisogno di essere chiariti ... ma il vero punto che stavo cercando di chiarire è che solo i documenti sul termine reale (ovvero i file su cui un utente lavora effettivamente che non hanno nulla a che fare con il funzionamento del sistema) si adattano davvero nella metafora del file.
Timwi,

Inoltre, non sono sicuro che questo risolva il problema. Se i programmi hanno accesso al sistema di archiviazione dedicato ai documenti dell'utente, possono comunque mettere la loro spazzatura lì. Ciò che è richiesto è qualcosa che impedisce ai programmi di farlo, sia attraverso mezzi tecnici sia facendo arrestare volontariamente i programmatori.
Roman Starkov,

Il registro era un tale sistema e non ha funzionato così bene. Non penso che l'approccio di Appdata in cui i programmi memorizzano i file con le proprie impostazioni sia così male.
Pieter B,

1

Anche se alcuni programmi memorizzano ancora alcuni dati in Documenti , penso che la maggior parte dei dati li memorizzi invece in AppData , quindi stanno già andando nella giusta direzione, tuttavia non ci sono molti utenti che possono fare: ogni programma è responsabile di ciò lo fa.


1
Sono d'accordo; gli utenti sono indifesi. Questo può essere risolto solo dai programmatori.
Roman Starkov,

1

Soluzione:
1. Fare clic con il pulsante destro del mouse sulla cartella "Documenti" e selezionare la scheda "Posizione".
2. Modifica la posizione "Documenti" in un'altra posizione in cui scelgo "C: \ Admin \ Configs" (una volta fatto, tutte le applicazioni, scrivendo in "documenti" devono essere inviate a C: \ Admin \ Configs.

Ma questo risolve solo metà del problema, il passo successivo dovrebbe essere abbastanza ovvio.

  1. Crea una nuova cartella in "C: \ User \\ Documentation"

Dovresti essere quindi in grado di aggiungere quella directory alle librerie ed eliminare quella vecchia, ho deliberatamente impostato un nome di cartella diverso in 'C: \ User \ ** Documentation **' perché volevo assicurarmi che nulla potesse essere difficile cartella.

Se la cartella "documenti" appare di nuovo in C: \ User \ a causa di quanto sopra, è sufficiente fare clic con il pulsante destro del mouse sulla cartella e renderla invisibile.


0

La memorizzazione delle impostazioni in un file di testo è una soluzione multipiattaforma universale.

A meno che gli sviluppatori non dovessero creare uno standard di database delle impostazioni multipiattaforma, penso che la maggior parte di noi continuerà a utilizzare i file di testo scaricati nella directory degli utenti.

Quelli di noi che sono intelligenti creeranno diverse interfacce di impostazioni per i sistemi che consentono motori di archiviazione delle impostazioni specializzati (come il registro di Windows).


1
Si noti che la cartella "Documenti" non è la directory "utente". La cartella "Documenti" è una sottodirectory della directory dell'utente, la cui intenzione doveva essere quella in cui l' utente ha salvato i propri documenti. Il problema è che i programmi hanno deciso di mettere anche le loro cose nella cartella "Documenti", anche se ci sono posti migliori (e documentati come tali) per le impostazioni del programma.
Dean Harding,

1
Questo è un buon esempio di un percorso verso il pasticcio di Documenti. Le persone eseguono il porting di un programma senza sapere molto di Windows e scaricano le loro cose nella prima directory che viene in mente. Probabilmente è molto più facile trovare "Documenti" piuttosto che trovare "AppData", soprattutto perché quest'ultimo implica decidere se inserirlo nel profilo locale o in roaming - termini non familiari a chiunque non sia profondamente coinvolto nello sviluppo di Windows.
Roman Starkov,

D'accordo, e ancora una volta - la vera soluzione è quella di avere un normale motore di storage impostazioni cross-platform.
Craige,

1
Non succederà. La domanda originale riguarda la rieducazione di tutti i programmatori di Windows e la tua risposta è rieducazione di tutti i programmatori. Né hai intenzione di convincere i programmatori Unix / Linux ad acquistare in un database di impostazioni, perché ci sono ottime ragioni per lasciarli come file di testo e dovrai affrontare ulteriori resistenze nel fare le cose nel modo Microsoft.
David Thornley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.