Dove archiviare i dati scrivibili che devono essere condivisi da tutti gli utenti in un programma di installazione di Vista?

StackOverflow https://stackoverflow.com/questions/114194

Domanda

La mia app è installata tramite NSIS.

Voglio che il programma di installazione installi il programma per tutti gli utenti.

Posso farlo installando nella directory 'file di programma'.

Esiste un file di database (firebird), che tutti gli account utente sul sistema devono condividere.

Se memorizzo questo file di database nella directory "Programmi", sarà di sola lettura.

Se lo memorizzo nella directory APPDATA degli utenti, ognuno avrà una copia diversa, quando un utente aggiunge i dati che gli altri non li vedranno.

Opzione 1 - Nella directory della mia app in "file di programma" crea una directory "Dati", nel mio programma di installazione rende questa directory leggibile da tutti, in questo modo la virtualizzazione dei "file di programma" dell'utente non si avvia e tutti gli utenti possono aggiornare il file e vedere le altre modifiche.

Altre opzioni?

È stato utile?

Soluzione

I dati per tutti gli utenti devono essere archiviati in% ALLUSERSPROFILE% o chiamare SHGetFolderPath () con il parametro CSIDL_COMMON_APPDATA per ottenere l'area di archiviazione di tutti gli utenti.

Vedi http://www.deez.info / sengelha / 2006/02/28 / windows-vista-changes / per maggiori dettagli.

Altri suggerimenti

Da qualche parte sotto il profilo Tutti gli utenti sarebbe la posizione ovvia. Penso che ci siano alcune regole su chi viene letto / scritto per impostazione predefinita, ma la documentazione di MS consiglia se hai bisogno di qualcosa di diverso per creare una sottodirectory e impostare gli ACL proprio nel programma di installazione.

In particolare userei:

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

Vedi Riferimento script NSIS per maggiori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top