2009-02-10 10 views
27

Je peux obtenir/définir des valeurs de Registre à l'aide de la classe Microsoft.Win32.Registry. Par exemple,Comment faire pour supprimer une valeur de Registre en C#

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

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

Répondre

70

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 docs pour Registry.CurrentUser, RegistryKey.OpenSubKey et RegistryKey.DeleteValue pour plus d'informations.

+1

Comment puis-je supprimer un dossier entier? supposons que je veux supprimer '@" Software \ TeamViewer ";' –

10
RegistryKey registrykeyHKLM = Registry.LocalMachine; 
string keyPath = @"Software\Microsoft\Windows\CurrentVersion\Run\MyApp"; 

registrykeyHKLM.DeleteValue(keyPath); 
registrykeyHKLM.Close(); 
+0

non code de travail –

+0

Correction de l'erreur, cela devrait fonctionner maintenant. –

11

Pour supprimer toutes les sous-clés/valeurs dans l'arbre (~ récursive), 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); 
} 

Utilisation:

string keyName = @"Software\Microsoft\Windows\CurrentVersion\Run"; 
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true)) 
{ 
    key.DeleteSubKeyTree("MyApp",false); 
} 
+5

On dirait que quelqu'un qui travaille sur .NET pensait que c'était une bonne idée aussi :) A été ajouté pour .NET 4.0 http://msdn.microsoft.com/en-us/library/dd411622.aspx –

Questions connexes