//------------------------------------------------------------------------------- CRegKeyInfo::CRegKeyInfo(const CRegKey& regkey) { m_pClassName = NULL; if(! regkey.IsOpen()) { SetResultCode(errKeyNotOpen); return; } DWORD nSize = 0; SetOSResult(::RegQueryInfoKey(regkey.GetKey(), NULL, &nSize, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); if(GetOSResult() != ERROR_SUCCESS) { SetResultCode(errRegistry); return; } nSize += 1; m_pClassName = new TCHAR[nSize]; SetOSResult(::RegQueryInfoKey(regkey.GetKey(), m_pClassName, &nSize, NULL, &m_nNumOfSubKeys, &m_nMaxSubKeyName, &m_nMaxClassName, &m_nNumOfValues, &m_nMaxValueName, &m_nMaxValueLen, &m_nSecurityDescLen, &m_ftLastWrite)); if(GetOSResult() != ERROR_SUCCESS) { delete m_pClassName; m_pClassName = NULL; SetResultCode(errRegistry); } }