VC中注册表的读写修改操作

1)打开注册表,读写之前都要进行此操作

HKEY hKEY;  //定义一个hkey句柄
 //打开与IRM相关的hKEY,访问注册表,hkey则保存函数所打开的键的句柄


 



 long ret = RegOpenKeyEx

(

HKEY_LOCAL_MACHINE,   //需要打开的主键的名称

REG_IRM_ROOT,    //需要打开的子键的名称,如 “SOFTWARE\\IRM";

0,  //目前保留

 KEY_WRITE,   //以什么方式打开 ,这里以写的方式

&hKEY       //得到将要打开键的句柄

);
 if(ret!=ERROR_SUCCESS) //如果无法打开hkey,则终止程序的执行

 {
  AfxMessageBox("
错误:无法打开有关的hKey");
  return;
 }

 

2)修改注册表的项,若项存在,则修改其值;若不存在,则添加此项

//这里读的是IP地址,m_editIPip地址控件的变量
 BYTE IP0, IP1, IP2, IP3;
 m_editIp.GetAddress(IP0, IP1, IP2, IP3);
 DWORD dwtype = REG_SZ; //
定义数据类型
 char  strIP[16]={0};
 sprintf(strIP, "%d.%d.%d.%d", IP0, IP1, IP2, IP3);
 int ip_len = strlen(strIP);
 DWORD dwsize = ip_len;
 //
设置

long ret1 = RegSetValueEx(

hKEY,  //刚打开注册表获得的打开键句柄

 REG_IRM_SERVERIP,  // 这个键下的子键名称,如IRM下的serverip

NULL, //保留,设为空 

dwtype, //子项的数据类型

 (LPBYTE)strIP,   //子键值得第一个字节地址

dwsize   //子键值得长度

);
 if(ret1 != ERROR_SUCCESS)
 {
  //AfxMessageBox("错误:无法打开有关的
hKey");
  Pdlg.m_strvalue = "获取IP注册表信息失败,请重试!
";
  Pdlg.m_btnPopup.LoadStdImage(IDB_PNG_INFICON, _T("PNG"));
  Pdlg.DoModal();
  return;
 }

 

3读取注册表信息

int  ret =RegOpenKeyEx(

HKEY_LOCAL_MACHINE,  //要打开的主键名称

 REG_IRM_ROOT,  //要打开的子键名称

 0,  //保留,设为0

 KEY_READ,  //以读的方式打开

&hKey    //获得打开键的句柄

)

if(ret != ERROR_SUCCESS)
 {
  DEBUGMSG(DEBUG_UI_MSG, (_T("Open %s registry failed:%d\n"), REG_IRM_ROOT, GetLastError()));
  return FALSE;
 }

//读项的值

DWORD dwType = 0;
 DWORD dwSize = 0;
 HKEY hKey = NULL;
 BOOL bRet = TRUE;

dwType = REG_SZ;
 dwSize = 128*sizeof(TCHAR);

RegQueryValueEx(

hKey,  //打开键的句柄 

REG_IRM_SERVERIP,  //项的名称

 NULL,  //保留,设为null

&dwType,  //设置项的数据类型

(LPBYTE)NULL,  //项的值,暂时为null

 &dwSize    //项的长度

);

int ret =  RegQueryValueEx(hKey,

REG_IRM_SERVERIP,

 NULL,

 &dwType,

 (LPBYTE)&g_strServerIP[0],  //准备好的buffer的首地址接收项值

 &dwSize // buffer的长度,根据项的类型buffer的类型也应该不同

)

(4)关闭注册表

RegCloseKey(hKey);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值