我试图通过C#删除某些注册表项,但是要编写关于注册表的代码无效,我以管理员身份打开了Visual Studio,试图删除位于此路径中的项:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
这是我的代码:
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刷新注册表列表)
答案 0 :(得分:1)
您更有可能试图从 64bit 应用程序中删除 32bit 密钥,反之亦然。
您将需要在应用中使用适当的位数,或使用以下内容读取 / 编写 / 删除 键
指定要在64位操作系统上定位的注册表视图。
与
打开一个新的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))
{
}