c# - 删除注册表子项不会删除,没有抛出错误
问题描述
我正在尝试通过 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}
我运行代码后名为enen的文件夹仍然存在(我点击F5刷新注册表列表)
解决方案
您很可能正试图从64 位应用程序中删除32 位密钥,反之亦然。
您将需要在您的应用程序中使用适当的位数,或使用以下内容来读取/写入/删除密钥
指定在 64 位操作系统上以哪个注册表视图为目标。
和
打开一个新的 RegistryKey,它表示具有指定视图的本地计算机上的请求键。
RegistryView 枚举:在 64 位版本的 Windows 上,部分注册表分别存储用于 32 位和 64 位应用程序。32 位应用程序有 32 位视图,64 位应用程序有 64 位视图。
您可以在使用
OpenBaseKey
和OpenRemoteBaseKey(RegistryHive, String, RegistryView)
方法时指定注册表视图,以及 RegistryKey 对象的 FromHandle 属性。
例子
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
}
推荐阅读
- android - 如何使状态栏中的所有通知可见?
- python - 如何仅存储从频繁更新的网站抓取的数据中更改的部分?
- python - 无法使用大小的 DateTime 字段创建 django 表
- unity3d - 我怎样才能在我的凸轮看的方向上统一滚动一个球?
- flutter - Flutter:通过删除所有填充使文本尽可能大
- php - 如何在codignitor中将数组创建为数组
- ios - 检测来自 iOS 键盘扩展的来电的批准方法是什么?
- kotlin - Kotlin Float.toString 和/或 String.format
- r - 强制 read_csv 读取预定义的行数,同时保持 NA 的位置
- ios - 苹果开发网站中的“共享扩展配置文件”在哪里