Удаление раздела реестра не удаляется, ошибка не выдана - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь удалить какой-либо ключ реестра через C#, но чтобы код не влиял на реестр, я открыл Visual Studio как администратор, я пытаюсь удалить ключ, расположенный по этому пути:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

enter image description here

Вот мой код:

string RegBHO = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects";
string guid = "{b908e54f-8c58-4d5d-8762-60d7d675cd39}";
RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(RegBHO, true);
registryKey.DeleteSubKey(guid, false);

Но папка с именем {b908e54f-8c58-4d5d-8762-60d7d675cd39} все еще существует enen после Я запускаю код (я нажал F5, чтобы обновить список реестра sh)

1 Ответ

1 голос
/ 18 февраля 2020

Скорее всего, вы пытаетесь удалить ключ 32bit из приложения 64bit или наоборот.

Вам нужно будет использовать соответствующую битность в вашем приложении или использовать следующее для read / write / Delete the ключи

RegistryView Enum

Указывает, какое представление реестра нужно настроить в 64-разрядной операционной системе.

с

RegistryKey.OpenBaseKey

Открывает новый RegistryKey, представляющий запрошенный ключ на локальном компьютере с указанным представлением.

RegistryView Enumeration : В 64-разрядной версии Windows части реестра хранятся отдельно для 32-разрядных и 64-разрядных приложений. Существует 32-разрядное представление для 32-разрядных приложений и 64-разрядное представление для 64-разрядных приложений.

Вы можете указать представление реестра при использовании методов OpenBaseKey и OpenRemoteBaseKey(RegistryHive, String, RegistryView), а также свойство FromHandle объекта RegistryKey.

Пример

using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{

}
...