首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从注册表项中删除注册表值和注册表项

如何从注册表项中删除注册表值和注册表项
EN

Stack Overflow用户
提问于 2009-09-25 05:03:12
回答 3查看 10.9K关注 0票数 2

我已经使用RegSetValueExA在注册表项中设置了键和值,并创建了它。但是现在我想从注册表项中删除该键和值,为此我使用了RegDeleteKey,但它给出的错误2是“系统找不到指定的文件”,你能告诉我如何解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2009-09-25 05:27:38

你能显示任何代码吗?它不能帮助这里的任何人缩小你的问题。

不过,如果我猜测一下,您在RegOpenKeyEx或RegDeleteKey中指定LPCTSTR lpSubKey的方式可能有问题。

示例:

如果您创建了密钥:

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\Software\Test

为了删除它,你需要类似这样的东西:

代码语言:javascript
复制
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software", 0, KEY_ALL_ACCESS, &RegHandle)
RegDeleteKey(RegHandle, test)

代码语言:javascript
复制
RegOpenKeyEx(HKEY_LOCAL_MACHINE, someNullValue, 0, KEY_ALL_ACCESS, &RegHandle)
RegDeleteKey(RegHandle, L"Software\\test")

请确保您再次在MSDN上查看这些函数。

RegDeleteKey RegOpenKeyEx

票数 4
EN

Stack Overflow用户

发布于 2009-09-25 05:13:05

注册表项是否有子项?RegDeleteKey不会执行递归删除。如果您正在为Vista+编写代码,则可以使用RegDeleteTree,否则您将不得不编写递归删除代码,但在MSDN上有示例代码。

您也可以在shlwapi.dll之外使用SHDeleteKey

票数 1
EN

Stack Overflow用户

发布于 2013-05-10 00:57:57

检查错误2/“找不到文件”的两件事:

  • 确保它不是键中的“值”,而不是实际的键。

如果你创建了一个类似HKCU > Software > CompanyName的文件夹,然后用RegSetValueEx存储了一个类似option = "foo“的值,那么你需要用RegDeleteValue或RegDeleteValueEx删除它。

  • 如果是64位操作系统,32位和64位的注册表视图是不同的。默认情况下,32位应用程序将对所有内容使用32位视图,但如果出于某种原因使用KEY_WOW64_64KEY创建条目,则在删除时需要使用该视图。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1475523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档