2011-03-08 16 views
6

la mia applicazione utilizza lo standard app.config per memorizzare i dati di configurazione pubblici. Tuttavia, ci sono ancora altri dati che non sono pubblici, ma devono essere sempre accessibili, persistenti, modificabili dall'applicazione e manualmente in caso di problemi.Qual è il modo migliore per archiviare dati di configurazione non pubblici in un'applicazione .NET 4.0

Ad esempio, immaginare che l'applicazione memorizzi alcune informazioni di licenza all'interno di un file che non deve essere disponibile al pubblico. Tuttavia, un amministratore deve essere in grado di modificare questo file utilizzando Blocco note o simile (senza editor speciali), quindi la crittografia è fuori dal gioco.

Utilizzeresti spazio di archiviazione isolato? Avete altri suggerimenti? Poiché l'applicazione non utilizza alcun database, non considerare l'archiviazione con un DB come opzione.

Quindi la domanda è come archiviare i dati dell'applicazione in modo che non sia facile da modificare a mano come con app.config, ma ancora facilmente modificabili per un utente esperto.

risposta

1

Che dire di un file di inclusione?

Come l'attributo file nello appSettings Element o SectionInformation.ConfigSource Property?

<configuration> 
    <appSettings file="machine-specific.config"> 
     <add key="Application Name" value="MyApplication" /> 
    </appSettings> 
</configuration> 

Il file incluso può essere protetto dall'accesso pubblico con i normali diritti di accesso al file system.

NON userò sicuramente lo spazio di archiviazione isolato. La crittografia sarebbe ideale ma poiché non è accettabile per voi ...

L'uso di variabili ambientali potrebbe funzionare anche io credo ... Ma probabilmente non lo userei da solo.

+0

Grazie, darei un'occhiata a questa opzione. Non voglio distribuire né la chiave di crittografia né uno strumento speciale per modificare tali file a tutti gli utenti esperti in tutto il mondo, quindi la crittografia non è accettabile. –

+0

@Thomasek: Sì, capisco i tuoi problemi con la crittografia. Mi rendo conto di aver dimenticato un'altra posizione ovvia per archiviare la configurazione: il sistema ** registro **. I valori del registro possono essere nascosti anche dagli utenti normali. –

+0

Un amministratore sul computer di destinazione non avrebbe accesso a nessun file? – Cosmin

0

Ho ottenuto ottimi risultati Using Settings in C#.

È possibile gestire facilmente le impostazioni dell'applicazione e dell'utente, che verranno automaticamente archiviate nella memoria isolata dalla classe generata da Visual Studio. Supportano praticamente qualsiasi tipo che sia serializzabile in XML pur rimanendo fortemente digitato.

+0

Scusa, forse mi sono espresso non esattamente ... Sto parlando di un'applicazione distribuita, non del codice sorgente. Per quanto ne so, questi file di impostazioni vengono compilati come risorse incorporate in exe/dll. SO come dovrebbe essere un utente potente in grado di modificare questi dati? –

+0

La classe generata da Visual Studio consente di modificare i valori delle impostazioni in fase di esecuzione e di mantenere tali modifiche. È possibile capire dove si trova nella memoria isolata il file con i valori correnti, ma vorrei solo creare una piccola finestra di dialogo o un parametro della riga di comando per inviare le informazioni all'applicazione. – madd0

Problemi correlati