注册表是windows操作系统中用于管理存储系统设置的数据库,在应用程序开发过程中,用注册表为应用程序保存相关不经常变动的参数为普遍采用的方式。开发的应用程序可以在注册表中存储自己的数据,然后在开发的应用程序中调用,提供了非常便利的方式。
VS2010注册表数据读写
一、实现代码(CPP):
void CRegEdit::WriteReg()
{
HKEY key ;
if(RegOpenKey(HKEY_LOCAL_MACHINE,strPath,&key)==ERROR_SUCCESS)
{
int idata = 123;
RegSetValueEx(key,_T("COM_LED"),0,REG_DWORD,(BYTE
*)&m_Com_LED ,sizeof(DWORD));
RegSetValueEx(key,_T("COM_PLC"),0,REG_DWORD,(BYTE
*)&m_Com_PLC ,sizeof(DWORD));
RegSetValueEx(key,_T("COM_OS"),0,REG_DWORD,(BYTE
*)&m_Com_OS ,sizeof(DWORD));
RegSetValueEx(key,_T("LED_VALE"),0,REG_DWORD,(BYTE
*)&m_LED_Value ,sizeof(DWORD));
RegSetValueEx(key,_T("FILE"),0,REG_SZ,(BYTE
*)m_strFile.GetBuffer(0),m_strFile.GetLength()*sizeof(DWORD));
RegCloseKey(key);
return ;
}
if(RegCreateKey(HKEY_LOCAL_MACHINE,strPath,&key)==ERROR_SUCCESS)
{
RegSetValueEx(key,_T("COM_LED"),0,REG_DWORD,(BYTE
*)&m_Com_LED ,sizeof(DWORD));
RegSetValueEx(key,_T("COM_PLC"),0,REG_DWORD,(BYTE
*)&m_Com_PLC ,sizeof(DWORD));
RegSetValueEx(key,_T("COM_OS"),0,REG_DWORD,(BYTE
*)&m_Com_OS ,sizeof(DWORD));
RegSetValueEx(key,_T("LED_VALE"),0,REG_DWORD,(BYTE
*)&m_LED_Value ,sizeof(DWORD));
RegSetValueEx(key,_T("FILE"),0,REG_SZ,(BYTE
*)m_strFile.GetBuffer(0),m_strFile.GetLength()*sizeof(DWORD));
RegCloseKey(key);
return ;
}
}
bool CRegEdit::ReadReg()
{
HKEY key ;
if(RegOpenKey(HKEY_LOCAL_MACHINE,strPath,&key)==ERROR_SUCCESS)
{
DWORD dwType = REG_DWORD;
DWORD szType = REG_SZ ;
DWORD dwData;
char chData[1024];
DWORD dwSize ;
DWORD szSize = 1024 ;
CString str ;
RegQueryValueEx(key,_T("COM_LED"),0,&dwType,(BYTE
*)&dwData,&dwSize);
SetCom_LED(dwData);
RegQueryValueEx(key,_T("COM_PLC"),0,&dwType,(BYTE
*)&dwData,&dwSize);
SetCom_PLC(dwData);
RegQueryValueEx(key,_T("COM_OS"),0,&dwType,(BYTE
*)&dwData,&dwSize);
SetCom_OS(dwData);
RegQueryValueEx(key,_T("LED_VALE"),0,&dwType,(BYTE
*)&dwData,&dwSize);
SetLEDValue(dwData);
RegQueryValueEx(key,_T("FILE"),0,&szType,(BYTE
*)&chData,&szSize);
str.Format(_T("%s"),chData);
SetFilePath(str);
return true;
}
WriteReg();//for defualt
return true ;
}
二、声明(.h)
class CRegEdit
{
public:
CRegEdit(void);
~CRegEdit(void);
void WriteReg();
bool ReadReg();
void SetCom_LED(int inum);
int GetCom_LED();
void SetCom_PLC(int inum);
int GetCom_PLC();
void SetCom_OS(int inum);
int GetCom_OS();
void SetLEDValue(int iValue);
int GetLEDValue();
void SetFilePath(CString strFile);
CString GetFilePath();
private:
CString strPath ;
int m_Com_LED ;
int m_Com_PLC;
int m_Com_OS;
int m_LED_Value ;
CString m_strFile;
};
三、系统调用
void CRegDlg::OnBnClickedWriteReg()
{
// TODO: 在此添加控件通知处理程序代码
m_Reg.WriteReg();
}
void CRegDlg::OnBnClickedReadReg()
{
// TODO: 在此添加控件通知处理程序代码
m_Reg.ReadReg();
}