删除注册子项不会删除,不会引发任何错误

时间:2020-02-18 08:29:01

标签: c# registry

我试图通过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}的文件夹仍然存在(我单击F5刷新注册表列表)

1 个答案:

答案 0 :(得分:1)

您更有可能试图从 64bit 应用程序中删除 32bit 密钥,反之亦然。

您将需要在应用中使用适当的位数,或使用以下内容读取 / 编写 / 删除

RegistryView Enum

指定要在64位操作系统上定位的注册表视图。

RegistryKey.OpenBaseKey

打开一个新的RegistryKey,它表示本地请求的密钥 具有指定视图的机器。

RegistryView枚举:在Windows的64位版本上,存储了部分注册表 分别用于32位和64位应用程序。有一个32位视图 用于32位应用程序,以及用于64位应用程序的64位视图。

使用OpenBaseKey时可以指定注册表视图, OpenRemoteBaseKey(RegistryHive, String, RegistryView)方法,以及 RegistryKey对象上的FromHandle属性。

示例

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

}