begin process at 2010 02 10 02:22:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > REGISTRYMANAGER: POUR ACCÉDER TRÈS SIMPLEMENT À LA BASE DE REGISTRE WINDOWS

REGISTRYMANAGER: POUR ACCÉDER TRÈS SIMPLEMENT À LA BASE DE REGISTRE WINDOWS


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Source .NET ( DotNet ) Classé sous :registe, registry Niveau :Initié Date de création :25/05/2004 Vu :9 500

Auteur : Kangoo06

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Une petite classe très pratique qui s'intègre très simplement dans un projet.
Elle permet de charger, modifier et sauvegarder les valeurs d'une clé présente dans la base de registre windows (typiquement pour sauvegarder des préférences utilisateurs comme le dernier répertoire d'enregistrement, ...).

Comme cette classe est basé sur les design pattern Singleton, elle peut être appelée de partout dans le code:

Pour récupérer une valeur (de type string):
RegistryManager.Instance.Parameter["le_no m_de_la_valeur"]

Pour modifier une valeur (de type string toujours):
RegistryManager.Instance.Parameter["le_ nom_de_la_valeur"] = "ma_valeur";

Un petit appel à la méthode SaveRegistry() pour finir et votre application stocke ses données proprement dans la base de registre :o)

Source

  • using System;
  • using System.Collections.Specialized;
  • using Microsoft.Win32;
  • namespace RegistryManagerNS
  • {
  • /// <summary>
  • /// RegistryManager Class
  • ///
  • /// Load and save all the parameters in the registry
  • /// </summary>
  • public class RegistryManager
  • {
  • #region Attributs
  • private static RegistryManager _instance = null;
  • private RegistryKey regKeyProduct = null;
  • private const string PRODUCT_NAME = "Nom de l application";
  • private const string MANUFACTURER_NAME = "Nom de l editeur";
  • private NameValueCollection _configurationParameters;
  • #endregion
  • #region Public Properties
  • public NameValueCollection Parameters
  • {
  • get{ return _configurationParameters; }
  • }
  • /// <summary>
  • /// Design Pattern Singleton
  • /// </summary>
  • public static RegistryManager Instance
  • {
  • get
  • {
  • if (_instance == null)
  • _instance = new RegistryManager();
  • return (_instance);
  • }
  • }
  • #endregion
  • #region Construtor
  • private RegistryManager()
  • {
  • RegistryKey regKeySoftware = Registry.LocalMachine.OpenSubKey("SOFTWARE");
  • RegistryKey regKeyManufacturer = regKeySoftware.OpenSubKey(MANUFACTURER_NAME, true);
  • if (regKeyManufacturer == null)
  • {
  • regKeyManufacturer = regKeySoftware.CreateSubKey(MANUFACTURER_NAME);
  • }
  • regKeyProduct = regKeyManufacturer.OpenSubKey(PRODUCT_NAME, true);
  • if (regKeyProduct == null)
  • {
  • regKeyProduct = regKeyManufacturer.CreateSubKey(PRODUCT_NAME);
  • }
  • _configurationParameters = new NameValueCollection();
  • LoadRegistry();
  • }
  • #endregion
  • #region Public methods
  • public void LoadRegistry()
  • {
  • this._configurationParameters.Clear();
  • foreach (string valueName in regKeyProduct.GetValueNames())
  • {
  • _configurationParameters.Add(valueName, (string)regKeyProduct.GetValue(valueName));
  • }
  • }
  • public void SaveRegistry()
  • {
  • foreach (string key in _configurationParameters.Keys)
  • {
  • regKeyProduct.SetValue(key, _configurationParameters.Get(key));
  • }
  • }
  • #endregion
  • }
  • }
using System;
using System.Collections.Specialized;
using Microsoft.Win32;


namespace RegistryManagerNS
{
	/// <summary>
	/// RegistryManager Class
	/// 
	/// Load and save all the parameters in the registry
	/// </summary>
	public class RegistryManager
	{
		#region Attributs
		private static RegistryManager _instance = null;
		private RegistryKey regKeyProduct = null;
		private const string PRODUCT_NAME = "Nom de l application";
		private const string MANUFACTURER_NAME = "Nom de l editeur";

		private NameValueCollection _configurationParameters;
		#endregion

		#region Public Properties

		public NameValueCollection Parameters 
		{
			get{ return _configurationParameters; }
		}

		/// <summary>
		/// Design Pattern Singleton
		/// </summary>
		public static RegistryManager Instance 
		{
			get 
			{
				if (_instance == null)
					_instance = new RegistryManager();
				return (_instance);
			}
		}

		#endregion

		#region Construtor
		private RegistryManager() 
		{
			RegistryKey regKeySoftware = Registry.LocalMachine.OpenSubKey("SOFTWARE");
			RegistryKey regKeyManufacturer  = regKeySoftware.OpenSubKey(MANUFACTURER_NAME, true);
			if (regKeyManufacturer == null)
			{
				regKeyManufacturer = regKeySoftware.CreateSubKey(MANUFACTURER_NAME);
			}
			regKeyProduct = regKeyManufacturer.OpenSubKey(PRODUCT_NAME, true);
			if (regKeyProduct == null)
			{
				regKeyProduct = regKeyManufacturer.CreateSubKey(PRODUCT_NAME);
			}
			_configurationParameters = new NameValueCollection();
			LoadRegistry();
		}

		#endregion

		#region Public methods
		public void LoadRegistry() 
		{
			this._configurationParameters.Clear();
			foreach (string valueName in regKeyProduct.GetValueNames()) 
			{
				_configurationParameters.Add(valueName, (string)regKeyProduct.GetValue(valueName));
			}
		}

		public void SaveRegistry()
		{
			foreach (string key in _configurationParameters.Keys) 
			{
				regKeyProduct.SetValue(key, _configurationParameters.Get(key));
			}
		}
		#endregion
	}
}

 Conclusion

Il y a bien sûr plein d'améliorations à apporter mais je la trouve très pratique et perso, je m'en sers tout le temps !


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) AUTO RESIZE PICTUREBOX, LA PICTUREBOX EN MIEUX :)
Source avec Zip Source .NET (Dotnet) LES DESIGN PATTERNS - MODÈLE FABRIQUE ABSTRAITE (ABSTRACT FA...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES LANGUES, COUNTRIES, CHAÎNES DE CARACTÈRE SIMPLE par gourky
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPLORER LA MFT D'UNE PARTITION NTFS par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) WRAPPER COMPLET SUR L'API DE BIOMÉTRIE DE WINDOWS 7 par Willi
Source avec Zip Source .NET (Dotnet) UTILISER L'ASSISTANT DE GRAVURE DE WINDOWS par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) EASYDESKXP par neo2k2

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) CLASSE PERMETTANT DE MODIFIER LES PARAMÈTRES DU FIREWALL DE ... par LUDINSKI
Source avec Zip Source avec une capture Source .NET (Dotnet) REGISTRE par Qpidon
Source .NET (Dotnet) ECRIRE ET LIRE DANS LA BASE DES REGISTRES WINDOWS par bezhas
Source avec Zip Source avec une capture Source .NET (Dotnet) BASE DE REGISTRE (AJOUT, MODIFICATION ET SUPPRESSION DE CLÉS... par Cameleon69
Source avec Zip Source .NET (Dotnet) BASE DE REGISTRE par xarier

Commentaires et avis

Commentaire de ultima_93 le 15/06/2004 10:42:27

jai un pt probleme sur ton code a ce nivo là
public void LoadRegistry()
{
this._configurationParameters.Clear();
foreach (string valueName in regKeyProduct.GetValueNames())
{
_configurationParameters.Add(valueName, (string)regKeyProduct.GetValue(valueName));
}
}

c kan il a fini le foreach
jai ce message "Additional information: Specified cast is not valid."

Commentaire de xolytem le 13/09/2004 10:11:33

Salut!

j'ai un problème avec ton code... lors du premier appel à "Instance" (les clés n'existent pas encore dans la bdr), la fonction "regKeyManufacturer = regKeySoftware.CreateSubKey(MANUFACTURER_NAME);" me retourne une erreur (System.UnauthorizedAccessException) alors que je suis administrateur sur ma machine ! (XP Pro) quelqu'un aurait-il la solution ?

Commentaire de Kangoo06 le 13/09/2004 15:26:54

Assure toi que la clé regKeyManufacturer est bien ouverte en mode écriture (2° param booléen du constructeur)

Commentaire de Khaled_ST le 02/05/2007 11:06:47

Lors du premier appel à instance , une UnauthorizedAccessException est levée. Ceci est du au fait que SOFTWARE est ouvert en lecture seule par défaut. Il faut changer
RegistryKey regKeySoftware = Registry.LocalMachine.OpenSubKey("SOFTWARE" , true);

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Base de registre recupération d'une valeur impossible :) [ par kyoto1 ] Je suis d&#233;butant en c#, d'habitude j'arrive toujours &#224; m'en sortir (d'ailleurs bravo pour votre site!!&nbsp; mais la , je sais pas pourquoi Registre HKEY_CURRENT_USER [ par ] Bonjour,&nbsp;&nbsp;&nbsp;En lisant le registre &#224; partir du code (csharp) en utilisant les classes Registry et RegistryKey, je m'apper&#231;ois q


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales