我有一个非常顽固的注册表项,无法删除或访问:
HKLM\Software\Symantec\Symantec Endpoint Protection\CurrentVersion
。当我尝试在中打开它时regedit
,它说"An error is preventing this key from being opened. Details: The system cannot find the file specified."
当我尝试删除整个分支时,我得到的只是"Error while deleting key"
。
根据我在其他地方找到的一些建议,我尝试下载RegDelNull 实用程序来自 Sysinternals,但扫描整个HKLM
树没有发现任何要删除的项目。但是,当我指定坏键的完整路径时,我收到以下消息:
"A null context handle was passed from the client to the host during a remote procedure call."
为什么 regedit 会抱怨无法找到指定的文件?这与注册表项的存储方式有关吗?
更重要的是,当专为此目的而制作的实用程序无法删除这些密钥时,我该如何删除它们?
答案1
我在 Windows 7 机器上也遇到了类似的问题。我最终发现该密钥是一个损坏的符号链接。内置regedit
工具似乎无法正确支持这些,并且在尝试访问此类密钥时会按照描述的方式运行。
我设法使用删除损坏的符号链接https://github.com/tenox7/regln像这样:
C:\Users\Zero3\Desktop>regln-x64.exe -d "\Registry\User\S-1-5-21-1688150413-3759
594893-2435602081-1000\Software\Microsoft\Windows\CurrentVersion\Shell Extension
s\Approved"
当然,您需要根据您的使用情况调整路径。
(作为参考,我注意到这里发布了一个类似的问题:https://serverfault.com/questions/796797/regedit-error-cannot-find-the-file-specified-accessing-key/963975)