考虑围绕原始 HKEY
句柄的 C++ 包装类的情况。
包装类有一个构造函数重载,将 HKEY
句柄作为输入:构造的对象拥有输入原始句柄的所有权。
析构函数在包装句柄上调用 RegCloseKey()
,存储在 HKEY m_hKey
数据成员中。
现在,考虑将预定义句柄(如 HKEY_CURRENT_USER
)传递给构造函数重载的情况。 HKEY_CURRENT_USER
值分配给 m_hKey
成员。
析构函数对该预定义键调用 RegCloseKey()
。在我的实验中,API 在这种情况下返回 0,意思是:成功。那么,可以在预定义的注册表项句柄上调用 RegCloseKey()
吗?
或者是否应该实现进一步检查,例如:
RegistryKey::~RegistryKey()
{
if ((m_hKey != nullptr) && !IsPredefinedKey(m_hKey))
::RegCloseKey(m_hKey);
}
最佳答案
RegOpenKey
function 的 MSDN 文档推断您只想在您以编程方式创建的句柄上调用 RegCloseKey
。
...如果 key 不是预定义的注册表项之一,请在使用完句柄后调用 RegCloseKey
函数。
关于c++ - 在预定义的注册表项句柄上调用 RegCloseKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43525828/