1. Set
HKEY hkFolder;
DWORD dwDisposition = REG_CREATED_NEW_KEY;
if(!m_vctNode.empty()) m_vctNode.clear();
if (ERROR_SUCCESS == ::RegCreateKeyEx(HKEY_CURRENT_USER, REGISTSUBFOLDER, NULL, _T("NODEITEM"),
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkFolder, &dwDisposition))
{
DWORD nSize = vctpNode.size();
NODEITEM * pNode = new NODEITEM[nSize];
for(int i=0;i<vctpNode.size();i++)
{
m_vctNode.push_back(*(vctpNode[i]));
pNode[i] = (*(vctpNode[i]));
}
RegSetValueEx(hkFolder, _T("NODEITEM"), NULL, REG_BINARY, (BYTE*) pNode, nSize * sizeof(NODEITEM));
delete [] pNode;
}
RegCloseKey(hkFolder);
2. Get
vGetAppCacheFolder();
HKEY hkFolder;
DWORD cbData = 0;
DWORD nType = REG_BINARY;
bool bResult = false;
NODEITEM *pNode = NULL;
LONG nRet1 = RegOpenKey(HKEY_CURRENT_USER, REGISTSUBFOLDER, &hkFolder);
cbData = 0;
LONG nRet2 = RegQueryValueEx(hkFolder, _T("NODEITEM"), NULL, &nType, (BYTE*)pNode, &cbData);
DWORD nApplySize = cbData/sizeof(NODEITEM);
pNode = new NODEITEM[nApplySize];
memset(pNode, 0, nApplySize);
nRet2 = RegQueryValueEx(hkFolder, _T("NODEITEM"), NULL, &nType, (BYTE*)pNode, &cbData);
if ( nRet1 == ERROR_SUCCESS && nRet2 == ERROR_SUCCESS )
{
m_vctNode.clear();
int nSize = cbData/sizeof(NODEITEM);
for (int ci=0; ci < nSize; ci++)
{
try{
m_vctNode.push_back((pNode[ci]));
}
catch(exception* e){
delete e;
m_vctNode.clear();
delete [] pNode;
return false;
}
}
bResult = true;
}else
{
FORMATMESSAGE(nRet2);
}
try
{
delete [] pNode;
}catch(exception* e)
{
m_vctNode.clear();
delete e;
}
RegCloseKey(hkFolder);
return bResult;
沒有留言:
張貼留言