Spesso si ha la necessità di archiviare/recuperare delle informazioni all'interno del registro di windows.
Il seguente snippet (parte del SecurityWrapper che sto completando proprio ora) include due metodi che possono essere decisamente di aiuto.
Come si può notare all'interno del codice è presente una proprietà di nome NomeAzienda, spesso la valorizzo con il nome dell'azienda cliente. A voi la scelta se tenerla o no.
class ReadWriteWinRegistry
{
// di default lascio CodePlex
private string nomeazienda = "CodePlex Projects";
///
/// Il nome dell'azienda che produce il software
///
public string NomeAzienda
{
get { return nomeazienda; }
set
{
if (value == null)
{
throw new InvalidValue("Specificare il valore di NomeAzienda");
}
else
{
nomeazienda = value;
}
}
}
///
/// Scrive un valore nel registry
///
/// Il nome del progetto a cui si sta lavorando
/// Il nome della chiave in cui l'informazione verrà registrata
/// Il valore che andrà ad essere archiviato
public void WriteInRegistry(string NomeProgetto, string NomeChiave, string Valore)
{
// Work in LocalMachine Archive
RegistryKey Chiave1 = Registry.LocalMachine;
// Create the SubKey
Chiave1.CreateSubKey(@"SOFTWARE\" + NomeAzienda + @"\" + NomeProgetto);
// Open the subkey
RegistryKey Chiave2 = Chiave1.OpenSubKey(@"SOFTWARE\" + NomeAzienda + @"\" + NomeProgetto, true);
// and then set the value
Chiave2.SetValue(NomeChiave, valore);
#region CleanUp Resourcers
Chiave2.Close();
Chiave2 = null;
Chiave1.Close();
Chiave1 = null;
#endregion
}
///
/// Ritorna il valore della chiave specificata per il gruppo di lavoro
///
/// Il nome del progetto a cui è associata la chiave
/// Il nome della chiave che si vuole recuperare
/// Il valore archiviato
public string ReadRegistry(string NomeProgetto, string NomeChiave)
{
RegistryKey Chiave1 = Registry.LocalMachine;
RegistryKey Chiave2 = Chiave1.OpenSubKey(@"SOFTWARE\" + NomeAzienda + @"\" + NomeProgetto, false);
string myvalue = string.Empty;
try
{
myvalue = Chiave2.GetValue(NomeChiave).ToString();
}
catch (NullReferenceException) // There's no key in the win registry
{
throw new NullReferenceException("La Chiave " + NomeChiave + " non è presente");
}
catch (Exception genEx)
{
throw genEx;
}
#region CleanUp Resources
Chiave2.Close();
Chiave2 = null;
Chiave1.Close();
Chiave1 = null;
#endregion
return myvalue;
}
}
Buon Sabato