我应该关闭HKEY吗?

时间:2011-07-07 17:22:09

标签: registry

如果我这样做:

HKEY lKey = NULL;

if(AssocQueryKey(..., &lKey) == S_OK)
{
    :
    if(RegCloseKey(lKey) == ERROR_SUCCESS)
    {
        //success
        int a = 0;//<- goes through here
    }
    else
    {
        //failure
        int a = 0;
    }
    if(RegCloseKey(lKey) == ERROR_SUCCESS)
    {
        //success
        int a = 0;
    }
    else
    {
        //failure
        int a = 0;//<- goes through here
    }
}

似乎需要关闭lKey,但AssocQueryKey的文档对此一无所知,RegCloseKey的帮助专门说“句柄必须由RegCreateKeyEx打开,RegCreateKeyTransacted ,RegOpenKeyEx,RegOpenKeyTransacted或RegConnectRegistry函数“。

我应该关闭lKey吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:1)

文档似乎有问题。请考虑此MSDN page,其中包含使用AssocQueryKey获取密钥后的代码。

答案 1 :(得分:0)

您可以确定使用Handle utility在流程中如何管理句柄。在调试器中运行程序,并在调用AssocQueryKey之前和之后查看其句柄用法(特别是注册表类别)。

如果在通话结束后有一个新的注册表句柄,我猜你必须关闭它,因为afai可以看到没有人会去。

答案 2 :(得分:0)

需要关闭HKEY。没有其他人会为你关闭这个,所以你需要这样做。