51 votes

Lecture de clés de registre en c #

J'ai développé une application et installé sur un système client. Dans mon application, je dois obtenir le chemin d'installation de mon application dans le système client. Il a une entrée de registre dans:

 HKEY_LOCAL_MACHINE\SOFTWARE\MyApplication\[AppPath]
 

Comment puis-je lire les AppPath utilisant C #?

114voto

SLaks Points 391154

Vous recherchez la méthode astucieusement nommée Registry.GetValue .

76voto

Miguel Points 2112
 string InstallPath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MyApplication\AppPath", "Installed", null);    
if (InstallPath != null)
{
    // Do stuff
}
 

Ce code devrait avoir votre valeur. Vous aurez besoin d'être

 using Microsoft.Win32;
 

pour que cela fonctionne bien.

28voto

Javed Akram Points 6621

voir ce http://www.codeproject.com/KB/system/modifyregistry.aspx

Mis à jour:

Vous pouvez utiliser RegistyKey class sous Microsoft.Win32 namespace.

Certaines fonctions importantes de RegistryKey sont les suivantes:

 GetValue       //to get value of a key
SetValue       //to set value to a key
DeleteValue    //to delete value of a key
OpenSubKey     //to read value of a subkey (read-only)
CreateSubKey   //to create new or edit value to a subkey
DeleteSubKey   //to delete a subkey
GetValueKind   //to retrieve the datatype of registry key
 

8voto

B H Points 143

Vous pouvez utiliser ce qui suit pour obtenir où le registre pense qu'il est installé:

(string)Registry.LocalMachine.GetValue(@"SOFTWARE\MyApplication\AppPath",
   "Installed", null);

Ou vous pouvez utiliser ce qui suit pour savoir où l'application est en fait lancé à partir de:

System.Windows.Forms.Application.StartupPath

Ce dernier est plus fiable que l'ancien si vous essayez d'utiliser l' .exe emplacement d'un chemin d'accès relatif de trouver les fichiers liés. L'utilisateur peut facilement déplacer les choses après l'installation et ont encore l'application fonctionne très bien parce que .NET applications ne sont pas aussi dépendant de la base de registre.

À l'aide de StartupPath, vous pourriez même faire quelque chose d'intelligent comme avoir votre application à jour les entrées de registre au moment de l'exécution au lieu de s'écraser lamentablement échoué en raison du manque de/faux, corrompu les entrées.

Et assurez-vous de vérifier les paramètres de l'application des fonctionnalités de stockage pour les valeurs plutôt que dans le registre (Properties.Settings.Default.mySettingEtc). Vous pouvez lire/écrire des paramètres de l'application et/ou l'utilisateur des niveaux qui sont enregistrés comme simple MyApp.exe.config fichiers dans des emplacements standard. Un joli coup de coeur (bon vieux Win 3.1/DOS jours) pour l'application installer/supprimer un simple copier/supprimer un dossier de la structure ou les deux, plutôt que de certaines alambiqué, arcanes installation/désinstallation de routine que les feuilles de toutes sortes de déchets dans le registre et éparpillées à travers le disque dur.

7voto

DynamicLynk Points 86

Si vous souhaitez le convertir en un type spécifique, vous pouvez utiliser cette méthode. La plupart des types non primitifs ne prendront pas en charge la diffusion directe par défaut, vous devrez donc les gérer en conséquence.

   public T GetValue<T>(string registryKeyPath, string value, T defaultValue = default(T))
  {
    T retVal = default(T);

      retVal = (T)Registry.GetValue(registryKeyPath, value, defaultValue);

      return retVal;
  }
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X