approccio universale per la memorizzazione delle impostazioni INI-tipo e / o file di DB su diverse macchine Windows

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

Domanda

OK, vera confessione prima: Forse è solo me, ma a volte "le migliori pratiche per le impostazioni del programma" su macchine Windows sente come se fosse cambiato più di strategie di accesso ai dati di Microsoft. Sono ancora in esecuzione XP, e da qualche parte lungo la strada appena genere "vitrei" su dove MS voleva per memorizzare tutti i dati della mia app, ecc ho controllato tutte le macchine ho codificato per, in modo che davvero non importa.

Ora sto scrivendo applicazioni per "in the wild", sostenendo Win98SE in su. Devo prestare attenzione a tutto questo ancora una volta. : - \

Per ragioni che hanno a che fare per lo più con una facile migrazione ai nuovi computer, io non sono un grande fan di utilizzare il Registro di sistema per le impostazioni di app - Io preferisco usare i file INI, e hanno alcune componenti più vecchi INI che uso per l'attività (Raize, di solito). Sono aperto a suggerimenti ad altri componenti di terze parti, se faranno questo / meno fastidio più facile.

In sostanza, ho bisogno di memorizzare impostazioni di app (come ricordare le impostazioni delle opzioni, ecc).

ho letto: contro il file INI per memorizzare le impostazioni delle applicazioni utente configurabile
Dove memorizzare le impostazioni del programma, invece di HKEY_LOCAL_MACHINE?
Dove dovrebbe il mio programma win32 mantenere i suoi file?
Posto migliore per memorizzare file di configurazione e file di log su Windows per il mio programma?

... così almeno non sono sola in questa domanda ...; )
(W / scuse per quello che è un po 'di una domanda di ripetizione, pur partendo da un angolo leggermente diverso).

Sembra che io posso solo usare% appdata% / MyProgram, e memorizzare tutti i dati lì, MA è presente universalmente vero in tutte le versioni di Windows da Win98SE su un massimo? Se no, qual è l'approccio migliore, e quando è che l'approccio venuto alla luce?

Quello che sto davvero cercando, onestamente, è il modo più semplice per fare questo problema andare via - Voglio solo uno (se possibile), facile, modo semplice, affidabile per afferrare "Cartella dati del mio programma" in qualsiasi e tutte le istanze. Può la sopra realizzare questo?

È stato utile?

Soluzione

Fare programmi Delphi Vista-Ready e scroll fino in fondo per: "Dove salvare i dati delle applicazioni?"

  

Funzione GetRoamingUserAppDataPath: string;   // funziona fino a quando le persone hanno almeno IE 4. (e Win95 o superiore)

Altri suggerimenti

% appdata% non sembra essere presente su Win95. Vorrei usare SHGetSpecialFolderPath che è disponibile su Win98 o Win95 w / IE4.

Le risposte che avete ottenuto finora sono buone, penso però che si stia mescolando le cose nella vostra domanda che non appartengono insieme, quindi non è possibile rispondere completamente alla tua domanda.

I tuoi interrogativi membri del titolo

  

impostazioni INI-tipo e / o file di DB

e questi possono essere due cose molto diverse. Bisogna distinguere tra i file che sono per il singolo utente, i file che sono comuni a tutti gli utenti, ma di sola lettura, e file comuni che ogni utente dovrebbe essere in grado di lavorare.

La prima categoria è facile, utilizzare una directory appropriata sotto uno dei CSIDL_APPDATA o CSIDL_PERSONAL cartelle.

La seconda categoria è anche facile, i file solo bisogno di essere installato nella posizione corretta dal programma di installazione, che deve essere eseguito con autorizzazioni appropriate, in quanto standard (limitati) gli utenti non saranno in grado di scrivere le posizioni corrette.

L'ultima categoria è comunque difficile, perché semplicemente non è una directory in tutte le installazioni di Windows che possono essere assunti per essere scrivibile per tutti gli utenti. Soprattutto in ambienti aziendali con utente bloccato account può essere che l'utente non ha i permessi di scrittura per il disco attori locali a tutti, solo alla loro directory utente da qualche parte su un server in rete. Quindi non c'è un unico modo semplice per afferrare che dati di posizione per il vostro programma e di essere sicuro che funzionerà -. Si tratta di qualcosa che forse avere a rivisitare per tutti i programmi e tutti i casi di utilizzo Anew

Per i punti bonus si dovrebbe anche considerare sempre se i file devono andare nel profilo comune ed essere disponibili su tutte le macchine in un dominio, o se sono specifiche della macchina.

Un consiglio che darei è di allontanarsi da file di database stile del desktop come Paradox o file di accesso per le applicazioni che necessitano di condividere i dati tra gli utenti su una macchina. Solo con real server di database (locale) si sarà in grado di avere i dati multi-utente su locked-down conti / macchine.

Non posso commentare se funziona su tutte le versioni, ma certamente d'accordo che i file .ini sono la risposta giusta. Quando XP detto di utilizzare il Registro ho provato - per un programma. In-house distribuzione ha mostrato che le impostazioni necessarie per essere copiato da macchina a macchina - il prossimo aggiornamento è tornato a file ini

.

Penso che l'intera po registro era una misura anti-pirateria di loro che volevano nascondere come best practice.

Io tendo ad usare i file XML in% appdata% per tenere le mie impostazioni. Solo perché in realtà xml è più facile che ini di per C #. Indipendentemente da ciò,% appdata% sembra una scommessa sicura.

Non posso consigliare se 98SE supporta questa.

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