Как удалить значение реестра в С#
Я могу получить/установить значения реестра с помощью класса Microsoft.Win32.Registry. Например,
Microsoft.Win32.Registry.SetValue(
@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",
"MyApp",
Application.ExecutablePath);
Но я не могу удалить какое-либо значение. Как удалить значение реестра?
Ответы
Ответ 1
Чтобы удалить значение, заданное в вашем вопросе:
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");
}
}
Посмотрите на документы для Registry.CurrentUser
, RegistryKey.OpenSubKey
и RegistryKey.DeleteValue
для получения дополнительной информации.
Ответ 2
Чтобы удалить все подразделы/значения в дереве (~ рекурсивно), используйте метод расширения, который я использую:
public static void DeleteSubKeyTree(this RegistryKey key, string subkey,
bool throwOnMissingSubKey)
{
if (!throwOnMissingSubKey && key.OpenSubKey(subkey) == null) { return; }
key.DeleteSubKeyTree(subkey);
}
Использование:
string keyName = @"Software\Microsoft\Windows\CurrentVersion\Run";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
{
key.DeleteSubKeyTree("MyApp",false);
}
Ответ 3
RegistryKey registrykeyHKLM = Registry.LocalMachine;
string keyPath = @"Software\Microsoft\Windows\CurrentVersion\Run\MyApp";
registrykeyHKLM.DeleteValue(keyPath);
registrykeyHKLM.Close();
Ответ 4
RegistryKey.DeleteValue