亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rnode.cpp

?? 一個(gè)對wince的注冊表進(jìn)行操作的源代碼。
?? CPP
字號(hào):
#include "stdafx.h"
#include "rnode.h"


CRegNode::CRegNode()
{
	m_pPrevSibling = m_pParent = m_pFirstChild = m_pNextSibling = NULL;
	m_dwType = REGNODE_TYPE_UNKNOWN;
	m_hItem = NULL;
	m_bValuesLoaded = m_bLoaded = FALSE;
	m_lpData = NULL;
}

CRegNode::CRegNode(CString strName, DWORD dwType)
{
	m_pPrevSibling = m_pParent = m_pFirstChild = m_pNextSibling = NULL;
	m_strName = strName;
	m_dwType = dwType;
	m_hItem = NULL;
	m_bValuesLoaded = m_bLoaded = FALSE;
	m_lpData = NULL;
}

CRegNode::~CRegNode()
{
	CRegNode *pTemp = m_pFirstChild;
	CRegNode *pPrev = NULL;
	while (pTemp)
	{
		pPrev = pTemp;
		pTemp = pTemp->m_pNextSibling;
		if (pPrev->m_lpData)
		{
			delete pPrev->m_lpData;
			pPrev->m_lpData = NULL;
		}
		delete pPrev;
	}
	if (m_lpData)
	{
		delete m_lpData;
		m_lpData = NULL;
	}
}


CRegNode::AddChild(CRegNode *pChild)
{
	CRegNode *pTemp, *pNext;
	pTemp = pNext = m_pFirstChild;
	if (pNext)
	do
	{
		pTemp = pNext;
		pNext = pNext->m_pNextSibling;
	} while (pNext);
	if (pTemp)
	{
		pTemp->m_pNextSibling = pChild;
		pChild->m_pPrevSibling = pTemp;
	}
	else
	{
		m_pFirstChild = pChild;
	}
}

HKEY CRegNode::GetKeyHandle()
{
	HKEY hKey = NULL;
	LONG lRet;
	if (m_strName == _T("HKEY_CLASSES_ROOT"))
		hKey = HKEY_CLASSES_ROOT;
	if (m_strName == _T("HKEY_CURRENT_USER"))
		hKey = HKEY_CURRENT_USER;
	if (m_strName == _T("HKEY_LOCAL_MACHINE"))
		hKey = HKEY_LOCAL_MACHINE;
	if (hKey)
		return hKey;
	HKEY hRoot = GetKeyRoot();
	if (hRoot)
	{
		lRet = RegOpenKeyEx(hRoot, GetKeyPath(), 0, KEY_ALL_ACCESS, &hKey);
		ASSERT(lRet == ERROR_SUCCESS);
	}
	return hKey;
}

HKEY CRegNode::GetKeyRoot()
{
	CRegNode *pTemp = m_pParent;

	while (pTemp)
	{
		if (pTemp->m_dwType & REGNODE_TYPE_ROOT)
		{
			return pTemp->GetKeyHandle();
		}
		pTemp = pTemp->m_pParent;
	}
	return NULL;
}

CString CRegNode::GetKeyPath()
{
	CRegNode *pTemp = m_pParent;
	CString strTemp1, strTemp2;
	strTemp1 = m_strName;
	while (pTemp && !(pTemp->m_dwType & REGNODE_TYPE_ROOT))
	{
		strTemp1 = pTemp->m_strName + _T("\\") + strTemp1;
		pTemp = pTemp->m_pParent;
	}
	return strTemp1;
}

BOOL LoadKey(CRegNode *pParentNode)
{
	HKEY hParent;
	LONG lRet = ERROR_SUCCESS, lRet2 = ERROR_SUCCESS;
	DWORD dwIndex = 0;
	TCHAR szName[512];
	DWORD dwSizeName = sizeof(szName)/sizeof(TCHAR);
	FILETIME ftLastWriteTime;
	CRegNode *pNode;

	if (pParentNode->m_bLoaded)
		return TRUE;
	hParent = pParentNode->GetKeyHandle();
	while (lRet != ERROR_NO_MORE_ITEMS)
	{
		lRet = RegEnumKeyEx(hParent, dwIndex, szName, &dwSizeName, NULL, NULL, NULL, &ftLastWriteTime);
		if (lRet == ERROR_NO_MORE_ITEMS)
			break;
		pNode = new CRegNode(szName, REGNODE_TYPE_KEY);
		AddNode(pNode, pParentNode);
		dwIndex++;
		dwSizeName = sizeof(szName)/sizeof(TCHAR);
	}
	pParentNode->m_bLoaded = TRUE;
	if (!(hParent == HKEY_LOCAL_MACHINE 
		||hParent == HKEY_CURRENT_USER 
		|| hParent == HKEY_CLASSES_ROOT 
		|| hParent == HKEY_USERS 
#ifndef _WIN32_WCE
		|| hParent == HKEY_CURRENT_CONFIG
#endif
		))
		RegCloseKey(hParent);
	return dwIndex > 0;
}


void LoadValues(CRegNode *pNode)
{
	HKEY hParent;
	LONG lRet = ERROR_SUCCESS;
	TCHAR szName[512];
	DWORD dwDataSize, dwSizeName = sizeof(szName)/sizeof(TCHAR);
	FILETIME ftLastWriteTime;
	DWORD dwType, dwSubKeys, cbMaxSubKeyLen, cValues, cbMaxValueNameLen, cbMaxValueLen, cbSecurityDescriptor;
	LPBYTE lpData = 0;
	CRegNode *pValueNode = NULL;

	if (pNode->m_bValuesLoaded)
		return;
	hParent = pNode->GetKeyHandle();
	lRet = RegQueryInfoKey(hParent,NULL, NULL, NULL, &dwSubKeys, &cbMaxSubKeyLen, NULL, &cValues, &cbMaxValueNameLen, &cbMaxValueLen, &cbSecurityDescriptor, &ftLastWriteTime);
	if (lRet != ERROR_SUCCESS)
	{
	if (!(hParent == HKEY_LOCAL_MACHINE 
		||hParent == HKEY_CURRENT_USER 
		|| hParent == HKEY_CLASSES_ROOT 
		|| hParent == HKEY_USERS 
#ifndef _WIN32_WCE
		|| hParent == HKEY_CURRENT_CONFIG
#endif
		))
			RegCloseKey(hParent);
		return;
	}
	for (UINT i = 0; i < cValues; i++)
	{
		dwDataSize = cbMaxValueLen;
		dwSizeName = sizeof(szName)/sizeof(TCHAR);
		lpData = new BYTE[cbMaxValueLen+2];
		lRet = RegEnumValue(hParent, i, szName, &dwSizeName, NULL, &dwType, lpData, &dwDataSize);
		if (lRet != ERROR_SUCCESS)
		{
			delete [] lpData;
			continue;
		}
		pValueNode = new CRegNode;
		pValueNode->m_strName = szName;		
		pValueNode->m_dwType = REGNODE_TYPE_VALUE;
		pValueNode->m_dwDataType = dwType;
		pValueNode->m_lpData = lpData;
		pValueNode->m_dwDataSize = dwDataSize;
		AddNode(pValueNode, pNode);
	}
	pNode->m_bValuesLoaded = TRUE;
	if (!(hParent == HKEY_LOCAL_MACHINE 
		||hParent == HKEY_CURRENT_USER 
		|| hParent == HKEY_CLASSES_ROOT 
		|| hParent == HKEY_USERS 
#ifndef _WIN32_WCE
		|| hParent == HKEY_CURRENT_CONFIG
#endif
		))
		RegCloseKey(hParent);
}

void AddNode(CRegNode *pNode, CRegNode *pParentNode)
{
	pNode->m_pParent = pParentNode;
	CRegNode *pTemp;	
	CRegNode *pPrev = NULL;

	if (pParentNode)
	{
		pTemp = pParentNode->m_pFirstChild;
		while (pTemp)
		{
			pPrev = pTemp;
			pTemp = pTemp->m_pNextSibling;
		}
		if (pPrev)
		{
			pPrev->m_pNextSibling = pNode;
			pNode->m_pPrevSibling = pPrev;
		}
		else
		{
			pParentNode->m_pFirstChild = pNode;
		}
	}
}

void DeleteNode(CRegNode *pNode)
{
	if (pNode->m_pPrevSibling)
		pNode->m_pPrevSibling->m_pNextSibling = pNode->m_pNextSibling;
	else
		pNode->m_pParent->m_pFirstChild = pNode->m_pNextSibling;

	delete pNode;
}

BOOL HasSubKeys(CRegNode *pNode)
{
	CRegNode *pTemp;
	if (pNode->m_pFirstChild) // has sub keys
	{
		pTemp = pNode->m_pFirstChild;
		while (pTemp)
		{
			if (pTemp->m_dwType & REGNODE_TYPE_KEY)
				return TRUE;
			pTemp = pTemp->m_pNextSibling;
		}
	}
	return FALSE;
}

BOOL DeleteKeyRecursive(CRegNode *pNode)
{
	CRegNode *pTemp;

	if (HasSubKeys(pNode)) // has sub keys
	{
		pTemp = pNode->m_pFirstChild;
		while (pTemp)
		{
			if (pTemp->m_dwType & REGNODE_TYPE_KEY)
				DeleteKeyRecursive(pTemp);
			pTemp = pTemp->m_pNextSibling;
		}
	}
	{
		// delete the key
		CString strTemp;
		strTemp = pNode->GetKeyPath();
		LONG lErr = RegDeleteKey(pNode->GetKeyRoot(), (LPCTSTR)strTemp);
		if (lErr != ERROR_SUCCESS)
		{
			strTemp.Format(_T("Delete failed (%s), Err %ld"), (LPCTSTR)pNode->m_strName, lErr);
			AfxMessageBox(strTemp);
		}
	}
	return TRUE;
}

void LoadKeysRecursive(CRegNode *pNode, BOOL bLoadValues)
{
	// load all subkeys and their subkeys ...
	CRegNode *pTemp;
	if (pNode->m_dwType & REGNODE_TYPE_KEY)
	{
		LoadKey(pNode);
		if (bLoadValues)
			LoadValues(pNode);
	}
	pTemp = pNode->m_pFirstChild;
	while (pTemp)
	{
		if (pTemp->m_dwType & REGNODE_TYPE_KEY)
			LoadKeysRecursive(pTemp, bLoadValues);
		pTemp = pTemp->m_pNextSibling;
	}
}

void CreateKeyRecursive(CRegNode *pNode, BOOL bCreateValues)
{
	CRegNode *pTemp;
	if (pNode->m_dwType & REGNODE_TYPE_KEY)
	{
		CreateKey(pNode);
	}
	pTemp = pNode->m_pFirstChild;
	while (pTemp)
	{
		if (pTemp->m_dwType & REGNODE_TYPE_KEY)
			CreateKeyRecursive(pTemp, bCreateValues);
		if (pTemp->m_dwType & REGNODE_TYPE_VALUE && bCreateValues)
			CreateValue(pTemp);
		pTemp = pTemp->m_pNextSibling;
	}
}

BOOL CreateKey(CRegNode *pNode)
{
	if (!pNode->m_pParent)
		return FALSE;
	HKEY hKeyParent = pNode->m_pParent->GetKeyHandle(), hNewKey;
	DWORD dwDisposition;
	LONG lErr;

	lErr = RegCreateKeyEx(hKeyParent, pNode->m_strName, 0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hNewKey, &dwDisposition);
	if (lErr == ERROR_SUCCESS)
	{
		RegCloseKey(hNewKey);
		RegCloseKey(hKeyParent);
		return TRUE;
	}
	RegCloseKey(hKeyParent);
	return FALSE;
}

BOOL CreateValue(CRegNode *pNode)
{
	LONG lRet;

	if (!pNode  || !pNode->m_pParent)
		return FALSE;

	HKEY hKey = pNode->m_pParent->GetKeyHandle();

	if (hKey)
	{
		lRet = RegSetValueEx(hKey, (LPCTSTR)pNode->m_strName, 0, pNode->m_dwDataType, (LPBYTE)pNode->m_lpData, pNode->m_dwDataSize);
		if (lRet == ERROR_SUCCESS)
		{
			RegCloseKey(hKey);
			return TRUE;
		}
		RegCloseKey(hKey);
	}

	return FALSE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品二三区| 欧美伊人久久大香线蕉综合69 | 欧美色精品天天在线观看视频| 欧美在线999| 日韩一级免费观看| 欧美国产精品一区二区| 亚洲一区二区精品视频| 精品一区二区三区在线播放| 99精品视频中文字幕| 正在播放亚洲一区| 欧美国产一区二区在线观看| 一区二区三区中文在线| 精品一区在线看| 91麻豆swag| 26uuu亚洲综合色| 亚洲自拍偷拍综合| 国产麻豆精品久久一二三| 欧美专区日韩专区| 精品99一区二区| 亚洲国产视频在线| 国产成人在线看| 欧美一区二区私人影院日本| 亚洲欧洲一区二区在线播放| 男女男精品视频| 日本韩国精品在线| 久久嫩草精品久久久精品| 亚洲一区二区三区小说| 成人动漫一区二区| 欧美一区二区黄| 亚洲女人小视频在线观看| 韩国女主播成人在线| 欧美丝袜自拍制服另类| 亚洲国产成人在线| 麻豆国产精品777777在线| 欧美性一级生活| 狠狠色伊人亚洲综合成人| 欧美日韩日日夜夜| 国产精品久久免费看| 激情欧美一区二区三区在线观看| 欧美在线观看视频一区二区三区| 国产精品私房写真福利视频| 九九精品一区二区| 在线播放中文字幕一区| 亚洲男人天堂av网| av在线不卡网| 国产色爱av资源综合区| 美女网站一区二区| 欧美揉bbbbb揉bbbbb| 亚洲人一二三区| 成人黄色在线网站| 国产欧美日韩在线| 国产麻豆午夜三级精品| 日韩欧美成人午夜| 免费精品视频在线| 777欧美精品| 亚洲国产欧美日韩另类综合 | 自拍偷拍亚洲激情| 国产精品99久久不卡二区| 精品久久久久久久一区二区蜜臀| 午夜亚洲福利老司机| 日本高清成人免费播放| 亚洲精品精品亚洲| 91在线观看视频| 亚洲人成精品久久久久| av午夜一区麻豆| 国产精品情趣视频| 高清在线成人网| 国产欧美日韩在线| 岛国精品在线播放| 中文在线免费一区三区高中清不卡| 精品一二三四区| 久久综合色8888| 六月丁香婷婷久久| 精品久久久久av影院| 久久99久久精品| 精品电影一区二区| 国产精品一级黄| 国产精品亲子伦对白| 成人福利在线看| 亚洲欧洲三级电影| 色av综合在线| 午夜久久久久久| 337p亚洲精品色噜噜| 青椒成人免费视频| 欧美电影精品一区二区| 国产一区二区中文字幕| 国产精品免费aⅴ片在线观看| av午夜精品一区二区三区| 亚洲精品视频在线看| 欧美视频一区二区在线观看| 天天综合色天天综合| 精品国内二区三区| 国产91精品一区二区| 亚洲丝袜精品丝袜在线| 欧美综合亚洲图片综合区| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区三区四区在线观看| 激情欧美一区二区三区在线观看| 欧美国产欧美综合| 亚洲丝袜另类动漫二区| 欧美午夜不卡在线观看免费| 蜜桃在线一区二区三区| 久久精品日产第一区二区三区高清版| 国产成a人亚洲精品| 亚洲婷婷综合色高清在线| 精品视频1区2区| 国产在线麻豆精品观看| 国产精品短视频| 555www色欧美视频| 国产激情91久久精品导航| 一区二区三区 在线观看视频| 日韩三级中文字幕| 不卡的电影网站| 视频一区国产视频| 国产日产欧美精品一区二区三区| 色一情一乱一乱一91av| 免费观看久久久4p| 亚洲欧洲99久久| 日韩一区二区中文字幕| 国产成人免费视| 午夜精品爽啪视频| 国产蜜臀97一区二区三区| 欧美三级日韩三级| 国产成人av电影在线| 日韩精品一二区| 国产精品久久久久影视| 91精品国产高清一区二区三区蜜臀 | 成年人国产精品| 日本亚洲最大的色成网站www| 国产视频亚洲色图| 欧美日韩精品免费| 成人一区二区三区中文字幕| 三级在线观看一区二区| 综合在线观看色| 精品播放一区二区| 欧美日韩视频在线一区二区| 成人av综合在线| 蜜桃av一区二区三区电影| 亚洲日本韩国一区| 国产人妖乱国产精品人妖| 制服丝袜成人动漫| 色婷婷综合五月| 国产伦精品一区二区三区视频青涩| 亚洲一区二区在线观看视频| 国产欧美视频在线观看| 日韩欧美一区二区视频| 欧美午夜理伦三级在线观看| 成人免费电影视频| 国产麻豆成人传媒免费观看| 日韩高清不卡一区二区三区| 亚洲欧美日韩国产成人精品影院| 国产欧美在线观看一区| 欧美成人一区二区三区片免费| 欧美日韩免费不卡视频一区二区三区 | 欧美精品1区2区3区| 91视频在线看| 成人免费毛片片v| 精品在线播放免费| 日韩福利视频导航| 亚洲一区二区三区中文字幕| 亚洲四区在线观看| 亚洲欧洲99久久| 国产精品亚洲成人| 黑人巨大精品欧美一区| 奇米影视一区二区三区小说| 天天影视色香欲综合网老头| 一区二区视频在线| 亚洲人快播电影网| 国产精品电影一区二区三区| 国产精品―色哟哟| 欧美国产欧美综合| 国产精品婷婷午夜在线观看| 国产性天天综合网| 久久精品一区蜜桃臀影院| 久久久五月婷婷| 久久久精品中文字幕麻豆发布| 337p粉嫩大胆噜噜噜噜噜91av| 欧美成人免费网站| 精品少妇一区二区| 久久久久久久久岛国免费| 精品免费日韩av| 久久精品日韩一区二区三区| 国产日韩v精品一区二区| 国产精品女主播在线观看| 国产精品视频一区二区三区不卡| 国产视频一区二区三区在线观看| 日本一区二区三区电影| 中文字幕国产精品一区二区| 国产精品萝li| 亚洲黄色在线视频| 亚洲一级不卡视频| 性欧美疯狂xxxxbbbb| 热久久国产精品| 国产美女娇喘av呻吟久久| 国产成人精品免费网站| 成人国产免费视频| 色综合久久久久久久久| 欧美三级在线播放| 日韩一区二区精品| 久久免费美女视频|