web-dev-qa-db-fra.com

Comment supprimer une valeur de Registre en C #

Je peux obtenir/définir des valeurs de registre à l'aide de la classe Microsoft.Win32.Registry. Par exemple,

Microsoft.Win32.Registry.SetValue(
    @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",
    "MyApp", 
    Application.ExecutablePath);

Mais je ne peux supprimer aucune valeur. Comment supprimer une valeur de registre?

38
ebattulga

Pour supprimer la valeur définie dans votre question:

string keyName = @"Software\Microsoft\Windows\CurrentVersion\Run";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
{
    if (key == null)
    {
        // Key doesn't exist. Do whatever you want to handle
        // this case
    }
    else
    {
        key.DeleteValue("MyApp");
    }
}

Regardez les documents pour Registry.CurrentUser , RegistryKey.OpenSubKey et RegistryKey.DeleteValue pour plus d'informations.

88
Jon Skeet

Pour supprimer toutes les sous-clés/valeurs de l'arborescence (~ récursivement), voici une méthode d'extension que j'utilise:

public static void DeleteSubKeyTree(this RegistryKey key, string subkey, 
    bool throwOnMissingSubKey)
{
    if (!throwOnMissingSubKey && key.OpenSubKey(subkey) == null) { return; }
    key.DeleteSubKeyTree(subkey);
}

Usage:

string keyName = @"Software\Microsoft\Windows\CurrentVersion\Run";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
{
   key.DeleteSubKeyTree("MyApp",false);   
}
15
Even Mien
RegistryKey registrykeyHKLM = Registry.LocalMachine;
string keyPath = @"Software\Microsoft\Windows\CurrentVersion\Run\MyApp";

registrykeyHKLM.DeleteValue(keyPath);
registrykeyHKLM.Close();
11
Binoj Antony
1
Sören Kuklau