2013-04-02 3 views
5

Qual è la differenza tra la memorizzazione delle impostazioni utente per un'applicazione inMemorizzazione impostazioni Properties.Settings.Default vs il Registro

Properties.Settings.Default

contro riporlo nel Registro dicono

HKEY_CURRENT_USER\Software\{Application Name}

+0

Potremmo stabilire un requisito in cui, per contrassegnare una domanda come duplicato, è necessario selezionare la domanda che duplica in modo che possa essere collegata qui? È estremamente frustrante tornare alla ricerca e ricordare quali domande sono state duplicate quando si cerca di trovare quello che non lo è. – jvance

risposta

0

Salvare le impostazioni come Properties.Settings.Default è l'unico modo corretto per farlo.

Il registro è un no-go. Non sei sicuro che l'utente che utilizza la tua applicazione abbia diritti sufficienti per scrivere nel registro.

+1

Non avresti sempre privilegi sufficienti per scrivere su hkey_current_user da un'applicazione installata? –

+0

Beh, in teoria dovresti avere abbastanza diritti per HKEY_CURRENT_USER. Tuttavia è più sicuro usare un'API propriamente detta. – duDE

3

La differenza è che il registro è, beh, il registro. Mentre Properties.Settings.Default salva in un file di configurazione nella directory AppData.

Personalmente non mi piace affatto lavorare con il Registro. È solo una fobia che mi è rimasta dall'era di Windows 98. Non è comunque una bella esperienza lavorare con il registro. I nomi delle chiavi sono brutti e c'è molto potenziale per causare il caos.

1

Da codehill.com:

Prima le impostazioni delle applicazioni .NET Framework sono stati salvati in file INI e il Registro di Windows. Ma .NET Framework ha introdotto un modo molto più semplice utilizzando un file XML. Il file ha il nome dell'assieme e un'estensione .exe.config e si trova all'interno della cartella dell'applicazione. In questo modo è più pulito perché quando un'applicazione viene disinstallata o eliminata, l'utente finale non deve preoccuparsi di lasciare le chiavi del registro di sistema o i file INI nella directory di Windows sinistra .

2

Properties.Settings.Default

Una tecnica comune per la memorizzazione dello stato dell'applicazione tra le esecuzioni è quello di scrivere su disco. Esistono molti approcci per farlo e Microsoft è entrato nel gioco introducendo le classi nello spazio dei nomi System.Configuration per aiutare gli utenti a gestire il salvataggio dello stato dell'applicazione (impostazioni).

Properties.Settings.Default è un'istanza statica di una classe che deriva da ApplicationSettingBase che gestisce la lettura e la scrittura delle impostazioni su disco. Le proprietà contrassegnate con l'attributo [UserScopedSetting] vengono salvate in un file XML in C: \ Users \ user \ AppData \ Local \ ComapnyName \ Hashed_AppName \ versione che può essere letta e scritta dall'utente. Le proposte taggate con l'attributo [ApplicationScopedSetting] vengono salvate nel file app.config e possono essere solo lette.

un file di impostazioni di base simile a questa:

class FormSettings : ApplicationSettingsBase 
{ 
    public WindowSettings() {} 
    public WindowSettings(string settingsKey) : base(settingsKey) {} 

    [UserScopedSettingAttribute()] 
    [DefaultSettingValueAttribute("MyDefaultName")] 
    public String Name 
    { 
     get { return (string)(this["Name"]); } 
     set { this["Name"] = value; } 
    } 
} 

È possibile impostare i valori in Properties.Settings.Default sia nell'interfaccia utente, nell'ambito del Progetto Proprietà-> Impostazioni o programattically via Properties.Settings.Default.

Registro

Il registro è un database gerarchico che memorizza le impostazioni di configurazione e le opzioni e memorizza questi loro come coppie di valori fondamentali. Vedere Wikipedia per ulteriori informazioni.

È possibile accedere al registro tramite la classe statica Microsoft.Win32.Registry che consente di leggere e scrivere valori. Ad esempio:

public class RegistryExample 
{ 
    public static void Main() 
    { 
     const string rootUser = "HKEY_CURRENT_USER"; 
     const string subkey = "RegistryExample"; 
     const string keyName = String.Format("{0}\\{1}, userRoot, subkey); 

     Registry.SetValue(keyName, "MyRegistryValue", 1234); 
    } 
} 

Vedere la pagina di documentazione MSDN per esempi. Come altri hanno già detto, ci sono pro e contro nell'uso del registro, ma penso che valga la pena affermare che il registro è una posizione "sicura" e che gli utenti avranno bisogno dell'autorizzazione per leggere una scrittura da esso dove come un file di impostazioni non richiede quelle autorizzazioni.