[英]Delete stubborn registry key
描述
一个驱动程序在注册表中留下了混乱(即使是从系统中卸载它)。 如果我检查安全设置,它将不会在“组或用户名”中显示任何内容。 当我检查所有者时,它仅显示“无法显示当前所有者。”。 当我想删除注册表项时,我必须:
取得所有权。
添加组。
删除密钥。
问题是每个注册表都有几个子项,我必须在每个项上重复该过程。 继承权限选项在注册表编辑器中不起作用。 是的,我正在管理员模式下运行注册表编辑器。
问题
我想编写一个简单的C#代码,该代码将循环并删除所有键。 我找到了一些代码示例,但就我而言,任何OpenSubKey调用都将失败,并显示以下错误: System.Security.SecurityException:不允许请求的注册表访问。 如果任何OpenSubKey函数调用失败,如何更改所有权? 还有其他命令可以声明所有权然后删除注册表项吗?
谢谢你的支持
正如您知道要以管理员身份运行注册表编辑器以确保您具有修改/删除注册表项的适当特权一样,您需要对C#应用程序执行相同的操作。
因为您忘记了这样做,所以System.Security.SecurityException
被抛出来作为提醒。 如异常消息所述,您没有权限修改/删除注册表项。
要解决该问题,必须使用管理特权执行C#应用程序。 您可以手动执行此操作,也可以将清单添加到您的应用程序中,这将导致它自动要求管理特权。
为了清楚起见,当您谈论在管理员模式下运行它时,请右键单击并以管理员身份运行-这是提升的特权,并且仅通过双击就不会发生。 即使您以管理员身份登录,也必须右键单击并以管理员身份运行才能提升权限。
我的问题是通过写给CURRENT_USER而不是LOCAL_MACHINE来解决的,现在我看到您的问题实际上并未通过提升和授予来解决。 您存储在注册表中的安全描述符可能已被AWOL驱动程序的垃圾写入或发生的任何事件破坏了。 这意味着您将无能为力,包括修复自己或新用户。
在我们清除权限问题之前,您可能也无法运行CCleaner。 但是,您可以进入安全模式并运行sfc / scannow和chkdsk-sfc修复了一个类似的问题,但是可能有风险,因此请自担风险,但是看起来很有希望,在尝试其他方法之前,我可能已经进行过scannow 。 安全模式+ SFC / SCANNOW
我会备份数据并尽快擦除它。 我确实找到了有关损坏的安全描述符的各种操作系统的说明-对于Win 8和7,因此您应该没有问题,并且看起来它们将需要安全模式
祝好运!
使用此查询并通过SQl删除它。
执行master..xp_regdeletevalue'hKey','Key Name','String Value'
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.