考慮圍繞原始HKEY
句柄的C++包裝類的情況。在預定義的註冊表鍵句柄上調用RegCloseKey
包裝類有一個構造函數過載,以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);
}
可能是你想禁止將預定義鍵傳遞給包裝類的構造函數。 – KonstantinL