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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? myreg.cpp

?? 電子監控的網絡編程實例
?? CPP
字號:
//CReg類定義文件
/********************************************************************************
//解析INI文件
// Written by: YiJian Feng
// Email: netfyee@hotmail.com
// Last Edit: 2003-5-5 

---使用
首先必須設置
BOOL SetFileName(CString FileName);
BOOL SetSectionName(CString SectionName);

**********************************************************************************/

//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MyReg.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CReg::CReg()
{
	m_hRegKey = (HKEY)0;
	SetMyRegRootKey();
	m_strSubKey = NULL;	

	m_strErrorDec = new TCHAR[MAX_PATH];
}

CReg::~CReg()
{
	CloseMyReg();

	delete m_strErrorDec;
}

//////////////////////////////////////////////////////////////////////
// Member Function
//////////////////////////////////////////////////////////////////////

long CReg::CreateMyReg(LPCTSTR lpSubKey,	BOOL IsOnlyRead)
{
	long eRegErr;

	CloseMyReg();

	eRegErr = SetMyRegSubKeyString(lpSubKey); 
	if (REG_NO_ERROR != eRegErr)
		return eRegErr;
	
	//打開注冊表的狀態
	if (!IsOnlyRead)
	{
		DWORD dwDisposition;
		if(ERROR_SUCCESS != RegCreateKeyEx(m_hRegRootKey, 
																				m_strSubKey, 
																				0, 
																				NULL, 
																				REG_OPTION_NON_VOLATILE, 
																				KEY_ALL_ACCESS,
																				NULL, 
																				&m_hRegKey,
																				&dwDisposition))
			eRegErr = REG_BAD_CREATE;
	}
	else
	{
		if (ERROR_SUCCESS != RegOpenKeyEx(m_hRegRootKey,
																			m_strSubKey,
																			0,
																			KEY_ALL_ACCESS,
																			&m_hRegKey))
			eRegErr = REG_BAD_CREATE;
	}

	return eRegErr;
}

long CReg::CloseMyReg()
{
	long eRegErr = REG_NO_ERROR;

	//關閉注冊表句柄
	if ((HKEY)0 < m_hRegKey)
	{
		if (ERROR_SUCCESS != RegCloseKey(m_hRegKey))
			eRegErr = REG_BAD_CLOSE;
		m_hRegKey = (HKEY)0;
	}

	//釋放子鍵字符串緩存
	if (NULL != m_strSubKey)
	{
		delete [] m_strSubKey;	
		m_strSubKey = NULL;
	}

	return eRegErr;
}


void CReg::SetMyRegRootKey(HKEY lpRootKey)
{
	m_hRegRootKey = lpRootKey;	
}


long CReg::SetMyRegSubKeyString(LPCTSTR lpSubKey)
{
	if (m_strSubKey)
		delete [] m_strSubKey;

	int nSubKeySize = lstrlen(lpSubKey);

	if (0 == nSubKeySize)
		return REG_INVALID_SUBKEY;

	//判斷第一個字符是否為"\",因為子鍵第一個字符不能為反斜杠
	LPCTSTR lpNextPoint = "";
	if (__TEXT('\\') == *lpSubKey)
	{
		lpNextPoint = CharNext(lpSubKey);
		--nSubKeySize;
	}
	else
		lpNextPoint = lpSubKey;
	
	m_strSubKey = new TCHAR[nSubKeySize + 1];	//lstrlen求得的長
																					//度不包括終止符“NULL”
	lstrcpy(m_strSubKey, lpSubKey);

	return REG_NO_ERROR;
}


long CReg::GetMyRegValueAttribute(LPCTSTR lpValueName, 
																				LPDWORD lpType, 
																				LPDWORD lpcbData)
{
	if ((HKEY)0 == m_hRegKey)
		return REG_NOT_INITIALIZE;

	if (ERROR_SUCCESS != RegQueryValueEx(m_hRegKey,
																				lpValueName,
																				NULL,
																				lpType,
																				NULL,
																				lpcbData))
		return REG_FAIL_READATTRIBUTE;

	return REG_NO_ERROR;
}


long CReg::GetMyRegValueAttribute(LPCTSTR lpSubKeyName, 
																				 LPCTSTR lpValueName, 
																				 LPDWORD lpType, 
																				 LPDWORD lpcbData)
{
	long eRegErr = CreateMyReg(lpSubKeyName, TRUE);

	if (REG_NO_ERROR != eRegErr)
		return eRegErr;

	eRegErr = GetMyRegValueAttribute(lpValueName, lpType, lpcbData);

	return eRegErr;
}


long CReg::GetMyRegValue(LPCTSTR	lpValueName, LPBYTE	lpData)
{
	long eRegErr = GetMyRegValueEx(lpValueName, REG_NONE, lpData);	
	
	return eRegErr;	
}


long CReg::GetMyRegValue(LPCTSTR	lpSubKeyName,
																LPCTSTR	lpValueName,
																LPBYTE	lpData)
{
	long eRegErr = GetMyRegValueEx(lpSubKeyName, 
																	lpValueName, 
																	REG_NONE,
																	lpData);

	
	return eRegErr;	
}


long CReg::GetMyRegValue(LPCTSTR lpValueName, 
																LPTSTR lpData, 
																LPCTSTR lpDefData)
{
	DWORD dwDataLength = MAX_PATH;

	if (ERROR_SUCCESS != RegQueryValueEx(m_hRegKey, 
																				lpValueName,
																				NULL,
																				NULL,
																				reinterpret_cast<BYTE*>(lpData),
																				&dwDataLength))					
	{
		lstrcpy(lpData, lpDefData);
	}

	return 0;	
};	


long CReg::SetMyRegValue(LPCTSTR			lpValueName, 
																LPCTSTR			lpData)
{
  if (ERROR_SUCCESS != RegSetValueEx(m_hRegKey,
																			lpValueName,
																			NULL,
																			REG_SZ,
																			reinterpret_cast<const BYTE*>(lpData),
																			lstrlen(lpData)))
	{
		return REG_FAIL_WRITEKEYVALUE;	
	}

	return REG_NO_ERROR;
}


long CReg::GetMyRegValue(LPCTSTR lpSubKeyName, 
																LPCTSTR lpValueName, 
																LPTSTR lpData)
{
	long eRegErr = GetMyRegValueEx(lpSubKeyName,
																	lpValueName, 
																	REG_SZ,
																	reinterpret_cast<LPBYTE>(lpData));
	
	return eRegErr;	
}


long CReg::GetMyRegValue(LPCTSTR lpValueName, 
																LPDWORD lpData,
																const DWORD	dwDefData)
{
	DWORD dwDataLength = MAX_PATH;

	if (ERROR_SUCCESS != RegQueryValueEx(m_hRegKey, 
																				lpValueName,
																				NULL,
																				NULL,
																				reinterpret_cast<BYTE*>(lpData),
																				&dwDataLength))					
	{
		*lpData = dwDefData;
	}

	return 0;	
}



long CReg::SetMyRegValue(LPCTSTR			lpValueName, 
																const DWORD	lData)
{
	int nData[256];

	nData[0] = lData;
  if (ERROR_SUCCESS != RegSetValueEx(m_hRegKey,
																			lpValueName,
																			NULL,
																			REG_DWORD,
																			(const unsigned char *)nData,
																			4))
	{
		return REG_FAIL_WRITEKEYVALUE;	
	}

	return REG_NO_ERROR;
}


long CReg::GetMyRegValue(LPCTSTR lpSubKeyName, 
																LPCTSTR lpValueName,
																LPDWORD lpData)
{
	long eRegErr = GetMyRegValueEx(lpSubKeyName,
																	lpValueName, 
																	REG_DWORD,
																	reinterpret_cast<LPBYTE>(lpData));

	
	return eRegErr;	
}

long CReg::GetMyRegValueEx(LPCTSTR				lpValueName,
																	const DWORD   cbType,
																	LPBYTE				lpData)
{
	DWORD dType;
	DWORD dcbData;

	long eRegErr = GetMyRegValueAttribute(lpValueName, &dType, &dcbData);
	
	if (REG_NO_ERROR != eRegErr)
		return eRegErr;

	if ((REG_NONE != cbType) && (cbType != dType))
		return REG_ERROR_KEYTYPE;

	++dcbData;
  if (ERROR_SUCCESS != RegQueryValueEx(m_hRegKey,
																				lpValueName,
																				NULL,
																				NULL,
																				lpData,
																				&dcbData))
	{
		return REG_FAIL_READKEYVALUE;	
	}

	return REG_NO_ERROR;
}


long CReg::GetMyRegValueEx(LPCTSTR				lpSubKeyName, 
																	LPCTSTR				lpValueName,
																	const DWORD		cdType,
																	LPBYTE				lpData)
{
	long eRegErr = CreateMyReg(lpSubKeyName, TRUE);

	if (REG_NO_ERROR != eRegErr)
		return eRegErr;

	eRegErr = GetMyRegValueEx(lpValueName, cdType, lpData);

	return REG_NO_ERROR;
}



long CReg::DelMyRegValue(LPCTSTR lpValueName)
{
  if (ERROR_SUCCESS != RegDeleteValue(m_hRegKey,
																			lpValueName))
	{
		return REG_FAIL_DELKEYVALUE;	
	}

	return REG_NO_ERROR;
}


long CReg::DelMyRegValue(LPCTSTR lpSubKeyName, LPCTSTR lpValueName)
{
	long eRegErr = CreateMyReg(lpSubKeyName, TRUE);

	if (REG_NO_ERROR != eRegErr)
		return eRegErr;

	eRegErr = DelMyRegValue(lpValueName);

	return REG_NO_ERROR;
}


long CReg::DelMyRegSubKey(LPCTSTR lpDelSubKeyName)
{
  if (ERROR_SUCCESS != RegDeleteKey(m_hRegKey, lpDelSubKeyName))
	{
		return REG_FAIL_DELSUBKEY;	
	}

	return REG_NO_ERROR;
}


long CReg::DelMyRegSubKey(LPCTSTR lpSubKeyName, LPCTSTR lpDelSubKeyName)
{
	long eRegErr = CreateMyReg(lpSubKeyName, TRUE);

	if (REG_NO_ERROR != eRegErr)
		return eRegErr;

	eRegErr = DelMyRegSubKey(lpDelSubKeyName);

	return REG_NO_ERROR;
}


long CReg::GetMyRegSubKeysCount(LPDWORD lpcbSubKeys, LPDWORD lpSubValue)
{
	if (ERROR_SUCCESS != RegQueryInfoKey(m_hRegKey,
		NULL,
		NULL,
		NULL,
		lpcbSubKeys,
		NULL,
		NULL,
		lpSubValue,
		NULL,
		NULL,
		NULL,
		NULL))
	{
		return REG_FAIL_DELSUBKEY;	
	}

	return REG_NO_ERROR;
}


long CReg::GetMyRegSubKeysCount(LPCTSTR lpSubKeyName, LPDWORD lpcbSubKeys, LPDWORD lpSubValue)

{
	long eRegErr = CreateMyReg(lpSubKeyName, TRUE);

	if (REG_NO_ERROR != eRegErr)
		return eRegErr;

	eRegErr = GetMyRegSubKeysCount(lpcbSubKeys, lpSubValue);

	return REG_NO_ERROR;
}

long CReg::EnumMyRegSubKeys(DWORD  dwIndex, LPTSTR	lpName)
{
  DWORD dwcbName = MAX_PATH;
	long eRegErr = RegEnumKeyEx(m_hRegKey, dwIndex, lpName, &dwcbName,
															NULL, NULL, NULL, NULL);

	if (ERROR_NO_MORE_ITEMS == eRegErr)
		return REG_NO_MORE_ITEMS;
	else if (ERROR_SUCCESS != eRegErr)
		return RET_FAIL_ENUM_SUBKEY;

	return REG_NO_ERROR;
}

LPCTSTR CReg::GetMyRegErrMsg(const long lErrorIndex) const
{
	switch (lErrorIndex)
	{
		case REG_NO_ERROR:
			lstrcpy(m_strErrorDec, _T("沒有錯誤!"));
			break;
		case REG_BAD_CREATE:
			lstrcpy(m_strErrorDec, _T("打開注冊表錯誤!"));
			break;
		case REG_NOT_INITIALIZE:
			lstrcpy(m_strErrorDec, _T("沒有初始化!"));
			break;
		case REG_BAD_CLOSE:
			lstrcpy(m_strErrorDec, _T("關閉注冊表錯誤!"));
			break;
		case REG_INVALID_SUBKEY:
			lstrcpy(m_strErrorDec, _T("無效的子鍵!"));
			break;
		case REG_FAIL_READATTRIBUTE:
			lstrcpy(m_strErrorDec, _T("讀取鍵值屬性失敗!"));
			break;
		case REG_FAIL_READKEYVALUE:
			lstrcpy(m_strErrorDec, _T("讀取鍵值失?。?quot;));
			break;
		case REG_ERROR_KEYTYPE:
			lstrcpy(m_strErrorDec, _T("錯誤的鍵類型"));
			break;
		case REG_BAD_ALLOC:
			lstrcpy(m_strErrorDec, _T("分配內存失??!"));
			break;
		case REG_NO_ENOUGH_BUFFER:
			lstrcpy(m_strErrorDec, _T("給定的緩存太小!"));
			break;
		case REG_FAIL_WRITEKEYVALUE:
			lstrcpy(m_strErrorDec, _T("寫入鍵值失敗!"));
			break;
		case REG_FAIL_DELKEYVALUE:
			lstrcpy(m_strErrorDec, _T("刪除鍵值失敗!"));
			break;			
		case REG_FAIL_DELSUBKEY:
			lstrcpy(m_strErrorDec, _T("刪除子鍵失敗!"));
			break;			
		case RET_FAIL_ENUM_SUBKEY:
			lstrcpy(m_strErrorDec, _T("列舉子鍵失敗!"));
			break;			
		case REG_NO_MORE_ITEMS:
			lstrcpy(m_strErrorDec, _T("列舉子鍵結束!"));
			break;			
		default:
			lstrcpy(m_strErrorDec, _T("未知的錯誤類型!"));
			break;
	}

	return m_strErrorDec;
}

long CReg::EnumMyRegSubKeyValues(DWORD dwIndex, LPTSTR lpName, LPTSTR lpValue)
{
	DWORD dwcbName = MAX_PATH;
	DWORD type_1=REG_SZ;
	DWORD cbData_1=20;
	long eRegErr = ::RegEnumValue(m_hRegKey, dwIndex, lpName, &dwcbName , NULL, &type_1,(BYTE*)lpValue,&cbData_1);
	if (ERROR_NO_MORE_ITEMS == eRegErr)
		return REG_NO_MORE_ITEMS;
	else if (ERROR_SUCCESS != eRegErr)
		return RET_FAIL_ENUM_SUBKEY;
	
	return REG_NO_ERROR;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清视频一二三区 | 中文字幕av免费专区久久| 91久久人澡人人添人人爽欧美| 国产精品夜夜嗨| 激情文学综合网| 国产乱对白刺激视频不卡| 久久99国产精品成人| 精品一区二区久久久| 激情图片小说一区| 国产精品资源网| 不卡av电影在线播放| 成人午夜又粗又硬又大| 99久久综合99久久综合网站| 成人av在线资源网站| 色综合一个色综合| 欧美午夜电影一区| 欧美一区二区观看视频| 精品日韩99亚洲| 亚洲日本欧美天堂| 亚洲综合成人在线| 青青草原综合久久大伊人精品| 久久精品国产免费| 成人美女视频在线观看18| av在线一区二区| 欧美精品亚洲二区| 国产欧美日韩综合| 夜夜揉揉日日人人青青一国产精品 | 欧美日韩免费在线视频| 欧美一区二区在线视频| 日本一区二区视频在线观看| 亚洲综合在线第一页| 韩国av一区二区三区在线观看| 盗摄精品av一区二区三区| 欧美性做爰猛烈叫床潮| 久久久精品免费免费| 亚洲女与黑人做爰| 极品瑜伽女神91| 91麻豆免费视频| 欧美电影免费观看高清完整版在线| 久久精品亚洲精品国产欧美| 亚洲青青青在线视频| 免费观看成人鲁鲁鲁鲁鲁视频| 成人av电影观看| 欧美α欧美αv大片| 亚洲欧美日韩国产另类专区| 国产一区二区三区免费| 欧美性受xxxx黑人xyx性爽| 国产欧美日韩卡一| 青青草国产精品97视觉盛宴| 91丨九色porny丨蝌蚪| 精品国产乱码久久久久久浪潮 | 2023国产一二三区日本精品2022| 一个色妞综合视频在线观看| 丁香五精品蜜臀久久久久99网站| 91麻豆精品国产91久久久| 国产精品不卡在线观看| 国产高清不卡一区二区| 7777精品久久久大香线蕉| 亚洲精品乱码久久久久久日本蜜臀| 久久久久久久久久看片| 国产在线播放一区| 成人av在线资源| 日韩一区二区精品在线观看| 精品久久久网站| 成人av午夜电影| 中文字幕亚洲电影| 欧美久久免费观看| 国内精品国产三级国产a久久| 亚洲午夜成aⅴ人片| 国产精品卡一卡二| 精品国内片67194| 久久视频一区二区| 中文字幕乱码久久午夜不卡| 中文一区二区在线观看| 日本一道高清亚洲日美韩| 日本成人在线网站| 99riav一区二区三区| 欧美日韩国产123区| 久久精品亚洲精品国产欧美| 亚洲欧美另类久久久精品2019| 一区二区三区四区不卡视频| 免费一区二区视频| 欧美日韩一区中文字幕| 日韩一区二区在线观看视频| 国产精品久久久久影视| 亚洲国产精品久久一线不卡| 日韩精品一区二区三区在线观看 | 中日韩av电影| 香蕉加勒比综合久久| 久久电影网站中文字幕| 一本大道av伊人久久综合| 亚洲精品一区二区精华| 午夜精品123| 欧美在线看片a免费观看| 国产精品免费免费| 色哟哟国产精品免费观看| 国产精品网曝门| 六月婷婷色综合| 精品国产伦一区二区三区免费| 国产一区二区在线看| 午夜精品视频一区| 亚洲午夜精品一区二区三区他趣| 成人av在线看| 国产乱码精品一品二品| 日本欧洲一区二区| 日韩精品每日更新| 亚洲成人黄色小说| 亚洲国产视频在线| 亚洲综合另类小说| 亚洲一区二区精品3399| 亚洲黄色在线视频| 亚洲综合在线免费观看| 亚洲精品中文在线影院| 亚洲欧美日韩电影| 一区二区三区中文免费| 亚洲精品视频免费看| 一区二区三区四区五区视频在线观看| 国产精品色哟哟网站| 国产精品国产三级国产aⅴ中文| 国产欧美一区二区三区鸳鸯浴| 久久久精品欧美丰满| 国产欧美日韩综合| 国产精品天天摸av网| 国产精品天美传媒| 最新日韩av在线| 亚洲日本一区二区| 午夜精品久久久久久不卡8050| 亚洲成人av电影在线| 日韩国产一区二| 经典一区二区三区| 国产成人精品亚洲日本在线桃色| 东方欧美亚洲色图在线| 99re这里都是精品| 欧美人xxxx| xfplay精品久久| 国产精品国产精品国产专区不蜜 | 亚洲综合精品自拍| 日本大胆欧美人术艺术动态| 国产剧情一区在线| 99国产欧美久久久精品| 91官网在线免费观看| 日韩视频免费观看高清完整版| 久久久精品综合| 亚洲自拍偷拍九九九| 精品一区精品二区高清| 91视频精品在这里| 91精品国产黑色紧身裤美女| 国产视频一区不卡| 亚洲成va人在线观看| 国产电影一区二区三区| 日本丰满少妇一区二区三区| 日韩欧美国产综合一区| 中文字幕一区二区在线观看| 天堂资源在线中文精品| 国产黄色精品网站| 欧美剧情电影在线观看完整版免费励志电影| 精品欧美久久久| 亚洲国产婷婷综合在线精品| 国产精品911| 7777精品伊人久久久大香线蕉 | 精品久久久久久久人人人人传媒| 国产欧美在线观看一区| 三级欧美在线一区| 99re这里只有精品首页| 欧美一区二区啪啪| 亚洲精品成人悠悠色影视| 激情五月激情综合网| 欧美视频在线观看一区二区| 欧美韩日一区二区三区四区| 麻豆专区一区二区三区四区五区| 91污在线观看| 久久精品一区四区| 蜜臀av性久久久久蜜臀aⅴ流畅| 不卡欧美aaaaa| 久久久欧美精品sm网站| 男男视频亚洲欧美| 在线观看日韩国产| 国产精品久久久久久久久免费相片 | 奇米一区二区三区av| 91视频国产资源| 国产精品免费久久久久| 国内久久婷婷综合| 欧美一级片在线| 日韩黄色在线观看| 欧美日韩一区二区三区免费看| 亚洲欧洲日韩一区二区三区| 国产精品原创巨作av| 日韩免费在线观看| 青青草原综合久久大伊人精品优势 | 精品久久五月天| 免费欧美在线视频| 欧美久久久久免费| 丝袜亚洲另类欧美| 欧美网站大全在线观看| 一卡二卡欧美日韩| 在线国产亚洲欧美| 亚洲一区二区高清| 精品视频色一区| 午夜视频在线观看一区二区 | 一本到一区二区三区|