2009-10-12 19 views

risposta

26

ApplicationData: Tutto ciò che l'applicazione richiede come dati "per utente" e non rientra in altre categorie. I file di configurazione standard andrebbero qui.

CommonApplicationData: Tutto ciò che non è "per utente".

LocalApplicationData: Dati per utente e non roaming. Ad esempio, tutto ciò in cui si desidera ASSICURARSI che sia memorizzato solo su questa macchina (ad esempio codici di attivazione della macchina, spesso anche cache/dati temporanei). I file temporanei standard andrebbero qui.

MyDocuments: Dati utente che l'utente potrebbe effettivamente identificare come "documenti singoli riconoscibili".

Se non ti interessa il nome file, puoi anche utilizzare un'API temporanea per generare un file temporaneo nella directory temp. NON dovresti farlo manualmente. Ad esempio, .NET è possibile utilizzare Path.GetTempFileName() per questo scopo.

+1

+1 per una risposta utile, in particolare per quanto riguarda la distinzione "per utente". Ma non sono chiaro su quali siano i nomi in grassetto ... i nomi letterali delle cartelle? no ... biblioteche? una sorta di astrazione che .NET usa per riferirsi alle cartelle? – LarsH

+2

@LarsH: "Ma non sono chiaro su quali siano i nomi in grassetto ..." Sono costanti di enumerazione .Net Environment.SpecialFolder - prova a fare clic su di essi. :-) – RenniePet

+0

@RenniePet: kthx. :-) – LarsH

1

AppData deve essere configurazione e profili automatici, i documenti devono essere solo file salvati dall'utente. Metterei tutto ciò che potrebbe essere utile in più sistemi in AppData/Roaming e qualsiasi altra cosa (specifica del computer) in AppData/Local o LocalLow. Per i file temporanei, utilizzare la directory Temp.

+0

Sono d'accordo. Lo odio quando le app che installo creano directory e/o archiviano file in (My) Documents. –

+0

Puoi tradurre la tua risposta in termini di enumerazione Environment.SpecialFolder? Environment.GetFolderPath (Environment.SpecialFolder.xxx) – Nestor

1

In generale, le migliori pratiche di Windows sono di seguire le variabili d'ambiente appropriate. I dati di configurazione che si desidera conservare dovrebbero andare in% APPDATA% e i file temporanei dovrebbero andare in% TEMP%.

Questo ha il vantaggio di non rompere in modo orribile se Windows cambia le cose e rispetta le strane configurazioni che le persone potrebbero avere.

Inoltre, sono d'accordo con altre risposte che "Documenti" dovrebbe essere solo per i dati creati dall'utente e solo dopo un prompt.

10

Da Windows 7 Client Software Logo Program:

  • Le domande devono essere installati nella cartella Programmi per impostazione predefinita. Dati utente o dati dell'applicazione non devono mai essere memorizzati in questa posizione a causa delle autorizzazioni di sicurezza % ProgramFiles% per applicazioni native a 32 bit e 64 bit e% ProgramFiles (x86)% per applicazioni a 32 bit in esecuzione su x64, rispettivamente sovrascrivendo ciascuna altri dati e impostazioni.
  • Tutti i dati dell'applicazione che devono essere condivisi tra gli utenti sul computer devono essere archiviati in ProgramData
  • Tutti i dati dell'applicazione esclusivi per un utente specifico e non condivisi con altri utenti del computer devono essere memorizzati in Users \\ AppData
  • Non scrivere mai direttamente nella directory "Windows" e/o nelle sottodirectory.Utilizzare i metodi corretti per l'installazione di file, come font o driver
  • Nelle installazioni "per macchina", i dati utente devono essere scritti al primo avvio e non durante l'installazione. Questo perché non esiste una posizione utente corretta per memorizzare i dati al momento dell'installazione. I tentativi da parte di un'applicazione di modificare i comportamenti di associazione predefiniti a livello di macchina dopo l'installazione non avranno esito positivo. Invece, i valori predefiniti devono essere rivendicati a livello di utente, il che impedisce a più utenti di sovrascrivere i valori predefiniti reciproci.
0

Inoltre, è necessario utilizzare SHGetFolderPath o SHGetKnownFolderPath (in Vista +) per ottenere i percorsi. Ciò fornirà la posizione corretta sul sistema corrente indipendentemente dalla versione o dalla lingua dell'installazione corrente. Non codificare mai il percorso che stai utilizzando.

Problemi correlati