Domanda

Beh, se voglio per memorizzare i dati per una macchina ampia applicazione mi basta usare

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

E se voglio per memorizzare i dati per utente io uso

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

Ma cosa succede se voglio salvare i dati per ogni istanza di applicazione? ho potuto utilizzare la cartella che l'applicazione è memorizzato in ma i "file di programma" cartelle non sono fatti per questo tipo di memorizzazione dei dati, se ho capito bene ...

Modifica: Per chiarire quello che intendevo se installo l'applicazione 2 volte in cartelle differnet ... non dispiace istanze in esecuzione

.
È stato utile?

Soluzione

Non so di qualsiasi altra applicazione che lo fa.

Se corro due copie di Visual Studio, per esempio, mi aspetto che le impostazioni di ultima istanza chiusi ad essere quelli persistevano.

Se si assegna un esempio, un ID univoco (GUID) come si fa a riutilizzare quel valore la prossima volta che si esegue l'applicazione? O vuoi ottenere una nuova serie di valori ogni volta che si esegue l'applicazione?

Se si vuole riutilizzare, è possibile creare sub directory numerate (1, 2, 3, 4, ecc) e ogni volta che si esegue l'applicazione scrivere un file di blocco a quella directory. Poi verificare la presenza del file di blocco e incrementare il numero fino a trovare una cartella sbloccato.

Aggiorna

Alla luce del commento aggiunto - perché non ottenere il percorso del file eseguibile e creare una cartella sotto che

?

Se l'utente non dispone di diritti di quella cartella dovreste creare una sorta di mappatura tra la posizione e un GUID (diciamo) che poi aggiunto al percorso impostazioni dell'applicazione e le impostazioni utente.

Altri suggerimenti

Perché non si memorizzano i dati nella Path.GetTempPath directory temp. È possibile utilizzare una sottocartella per la vostra applicazione e un altro sottocartella (forse un GUID come nome sarebbe stato utile) per l'istanza. Vorrei implementare una classe dirigente che implementa IDisposable per permettere la rimozione del percorso esempio quando l'applicazione viene chiusa.

Crea una cartella di esempio sotto sia la cartella dati utente o nella cartella dei dati macchina se avete bisogno di fare questo. L'applicazione potrebbe rimuovere tutti i dati non-voluto in uscita. Anche se @ ChrisF ha ragione su un comportamento più usuale.

Una possibilità sarebbe quella di generare un ID univoco la prima volta che il programma viene eseguito e memorizzarlo da qualche parte specifica del programma (forse un file di configurazione locale).

Poi, quando si desidera accedere ai file per quella copia della domanda, è sufficiente utilizzare

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid);

o

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top