首页 文章

确定注册表项是否与注册表值或子项相对应的最佳方法是什么?

提问于
浏览
0

我编写了一个程序,在Windows注册表中创建以下子项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

我写了第二个程序,它解开了我的第一个程序 . 在删除子项之前,第二个程序必须检查子项是否包含更多子项或值 . 如果子项不包含其他子项或值,则将删除该子项 .

如何检查子项是否包含任何子项或值?

2 回答

  • 3

    使用RegQueryInfoKey()

    检索有关指定注册表项的信息 .

    在它可以输出的许多不同参数中,它具有以下两个对您有用的参数:

    lpcSubKeys [out,optional]指向变量的指针,该变量接收指定键包含的子键数 . 此参数可以为NULL . lpcValues [out,optional]指向变量的指针,该变量接收与键关联的值的数量 . 此参数可以为NULL .

    如上所述,请注意,如果指定的键具有任何子键,则RegDeleteKey()将失败,但如果它具有任何值,则不会失败 . 因此,您根本不需要检查是否存在子键,仅用于值 . 如果没有值,则让函数正常失败 .

    更简单的解决方案是使用SHDeleteEmptyKey(),如果密钥有任何子键或值,则会失败 . 然后你根本不需要手动检查 .

  • 4

相关问题