⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registry.cpp

📁 CRegistry注册表
💻 CPP
字号:
// Registry.cpp : implementation file
//

#include "stdafx.h"
#include "Registry.h"
#include <assert.h>

/////////////////////////////////////////////////////////////////////////////
// CRegistry

CRegistry::CRegistry(HKEY hKey)
{
	m_hKey=hKey;
	if( hKey == HKEY_LOCAL_MACHINE)
		m_strRegRoot = "HKEY_LOCAL_MACHINE";
}

CRegistry::~CRegistry()
{
	Close();
}

/////////////////////////////////////////////////////////////////////////////
// CRegistry Functions

BOOL CRegistry::CreateKey(LPCTSTR lpSubKey)
{
	assert(m_hKey);
	assert(lpSubKey);

	HKEY hKey;
	DWORD dw;
	long lReturn=RegCreateKeyEx(m_hKey,lpSubKey,0L,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dw);
    
	if(lReturn==ERROR_SUCCESS)
	{
		m_hKey=hKey;
		m_strCurrentKey += lpSubKey;
		m_strCurrentKey += "\\";
		return TRUE;
	}
	return FALSE;
	
}

BOOL CRegistry::Open(LPCTSTR lpSubKey,BOOL bCreate)
{
	assert(m_hKey);
	assert(lpSubKey);
    
	HKEY hKey;
	long lReturn=RegOpenKeyEx(m_hKey,lpSubKey,0L,KEY_ALL_ACCESS,&hKey);
    
	if(lReturn==ERROR_SUCCESS)
	{
		m_hKey=hKey;
		m_strCurrentKey += lpSubKey;
		m_strCurrentKey += "\\";
		return TRUE;
	}
	else if(bCreate)
	{
		return CreateKey(lpSubKey);
	}
	return FALSE;
	
}

void CRegistry::Close()
{
	if(m_hKey)
	{
		RegCloseKey(m_hKey);
		m_hKey=NULL;
		m_strCurrentKey.Empty();
		m_strRegRoot.Empty();
	} 

}

BOOL CRegistry::DeleteValue(LPCTSTR lpValueName)
{
	assert(m_hKey);
	assert(lpValueName);
	
	long lReturn=RegDeleteValue(m_hKey,lpValueName);
	
	if(lReturn==ERROR_SUCCESS)
		return TRUE;
	return FALSE;
	
}

BOOL CRegistry::DeleteKey(HKEY hKey, LPCTSTR lpSubKey)
{
	assert(hKey);
	assert(lpSubKey);
	
	long lReturn=RegDeleteValue(hKey,lpSubKey);
	
	if(lReturn==ERROR_SUCCESS)
		return TRUE;
	return FALSE;
	
}
//写入DWORD值
BOOL CRegistry::SetDWORDValue(LPCTSTR lpSubKey, DWORD dwVal)
{
	assert(m_hKey);
	assert(lpSubKey);
	
	long lReturn=RegSetValueEx(m_hKey,lpSubKey,0L,REG_DWORD,(const BYTE *) &dwVal,sizeof(DWORD));
	
   	if(lReturn==ERROR_SUCCESS)
		return TRUE;
	
	return FALSE;
	
}
//写入字符串值
BOOL CRegistry::SetKeyValue(LPCTSTR lpValueName, LPCTSTR lpValue)
{
	assert(m_hKey);
	assert(lpValueName);
	assert(lpValue);	

	long lReturn=RegSetValueEx(m_hKey,lpValueName,0L,REG_SZ,(const BYTE *) lpValue,strlen(lpValue)+1);
	
   	if(lReturn==ERROR_SUCCESS)
		return TRUE;
	
	return FALSE;
	
}


int CRegistry::Read(LPCTSTR lpValueName,int nDefault)
{
	assert(m_hKey);
	assert(lpValueName);
	
	DWORD dwType;
	DWORD dwSize=sizeof(DWORD);
	DWORD dwDest;
	long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)&dwDest,&dwSize);
	
	if(lReturn==ERROR_SUCCESS)
	{
		return (int)dwDest;
	}
	return nDefault;
	
}

BOOL CRegistry::Read(LPCTSTR lpValueName, DWORD* pdwVal)
{
	assert(m_hKey);
	assert(lpValueName);
	assert(pdwVal);
	
	DWORD dwType;
	DWORD dwSize=sizeof(DWORD);
	DWORD dwDest;
	long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)&dwDest,&dwSize);
	
	if(lReturn==ERROR_SUCCESS)
	{
		*pdwVal=dwDest;
		return TRUE;
	}
	return FALSE;
	
}
BOOL CRegistry::Read(LPCTSTR lpValueName, tstring* lpVal)
{
	assert(m_hKey);
	assert(lpValueName);
	assert(lpVal);
	
	DWORD dwType;
	DWORD dwSize=200;
	char szString[2550];
	
	long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)szString,&dwSize);
	
	if(lReturn==ERROR_SUCCESS)
	{
		*lpVal=szString;
		return TRUE;
	}
	return FALSE;
	
}


BOOL CRegistry::RestoreKey(LPCTSTR lpFileName)
{
	assert(m_hKey);
	assert(lpFileName);
	
	long lReturn=RegRestoreKey(m_hKey,lpFileName,REG_WHOLE_HIVE_VOLATILE);
	
	if(lReturn==ERROR_SUCCESS)
		return TRUE;
	
	return FALSE;
}

BOOL CRegistry::SaveKey(LPCTSTR lpFileName)
{
	assert(m_hKey);
	assert(lpFileName);
	
	long lReturn=RegSaveKey(m_hKey,lpFileName,NULL);
	
	if(lReturn==ERROR_SUCCESS)
		return TRUE;
	
	return FALSE;
}

//BOOL CRegistry::EnumKey(CStringList &strList)
//{
//  assert(m_hKey);
//  char buf[MAX_PATH] = { 0 };
//  DWORD dwIndex = 0;
//  CString strListNote;
//  long lReturn = RegEnumKey (m_hKey,dwIndex,buf,MAX_PATH);
// while (lReturn == ERROR_SUCCESS) 
// {
//   strListNote = buf;
//   strList.AddTail(strListNote);
//   lReturn = RegEnumKey(m_hKey,++dwIndex,buf,MAX_PATH);
//  }
//  return TRUE;
//}
BOOL CRegistry::UpLevelKey()
{
  assert(m_hKey);
  tstring strRoot = m_strRegRoot;
  tstring strCurrentKey = m_strCurrentKey;
  Close();
  if( strRoot == "HKEY_LOCAL_MACHINE")
   m_hKey = HKEY_LOCAL_MACHINE;
 //if strRoot == "HKEY_CLASSES_ROOT" 
   //m_hKey = HKEY_CLASSES_ROOT; and so on.
	tstring strUpLevel = strCurrentKey.Left(strCurrentKey.ReverseFind('\\'));
  return Open(strUpLevel);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -