如果我这样做:
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吗?如果是这样,怎么样?
答案 0 :(得分:1)
文档似乎有问题。请考虑此MSDN page,其中包含使用AssocQueryKey获取密钥后的代码。
答案 1 :(得分:0)
您可以确定使用Handle utility在流程中如何管理句柄。在调试器中运行程序,并在调用AssocQueryKey
之前和之后查看其句柄用法(特别是注册表类别)。
如果在通话结束后有一个新的注册表句柄,我猜你必须关闭它,因为afai可以看到没有人会去。
答案 2 :(得分:0)
需要关闭HKEY
。没有其他人会为你关闭这个,所以你需要这样做。