CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

请教高手如何编写程序修改注册表中的信息

楼主cjxs(cjxs)2003-08-03 11:34:56 在 VC/MFC / 网络编程 提问

由于服务器地址的改变,需要把用户原来安装的客户端程序的连接IP进行修改,希望编写一程序批量处理,减少用户的操作,该IP地址的信息是存放在注册表中的。  
   
  请高手举例说明,谢谢。 问题点数:100、回复次数:4Top

1 楼laodie(张三)回复于 2003-08-04 23:33:37 得分 90

//这两个方法分别是读取和设置注册表的,你改一下试试。  
   
   
  void   CRegistryView::OnButton1()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  HKEY   hKEY;  
  LPCTSTR   path="Software\\Microsoft\\MS   Setup   (ACME)\\User   Info";  
   
  long   ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,   0,   KEY_READ,&hKEY);  
  /* LPVOID   lpMsgBuf;  
  FormatMessage(    
          FORMAT_MESSAGE_ALLOCATE_BUFFER   |    
          FORMAT_MESSAGE_FROM_SYSTEM   |    
          FORMAT_MESSAGE_IGNORE_INSERTS,  
          NULL,  
          ret,  
          MAKELANGID(LANG_NEUTRAL,   SUBLANG_DEFAULT),   //   Default   language  
          (LPTSTR)   &lpMsgBuf,  
          0,  
          NULL    
  );  
  //   Process   any   inserts   in   lpMsgBuf.  
  //   ...  
  //   Display   the   string.  
  MessageBox(   NULL,   (LPCTSTR)lpMsgBuf,   "Error",   MB_OK   |   MB_ICONINFORMATION   );  
  //   Free   the   buffer.  
  LocalFree(   lpMsgBuf   );  
  */  
  if(ret!=ERROR_SUCCESS)   //如果无法打开hKEY,则终止程序的执行  
  {  
  MessageBox("错误:   查询无法打开有关的hKEY!");  
  return;  
  }  
   
  unsigned   char   tmp[256]="\0";  
  DWORD   type=REG_SZ;  
  DWORD   size=80;  
  ret=::RegQueryValueEx(hKEY,"DefName",   NULL,&type,tmp,&size);  
  if(ret!=ERROR_SUCCESS)  
  {  
  MessageBox("错误:无法查询有关注册表信息!");  
  return;  
  }  
  CString   tmpstring=CString(tmp);  
  //AfxMessageBox(tmpstring);  
  SetDlgItemText(IDC_EDIT1,tmpstring);  
  ::RegCloseKey(hKEY);  
  }  
   
  void   CRegistryView::OnButton2()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  unsigned   char   tmp[256];  
  CString   tmpstring1;  
  if(!GetDlgItemText(IDC_EDIT1,tmpstring1))  
  {  
                    MessageBox("错误:请输入正确信息!");  
  }  
  sprintf((char   *)tmp,"%s",tmpstring1);  
  CString   tmpstring=tmp;  
   
  HKEY   hKEY;  
  DWORD   type=REG_SZ;  
  DWORD   size=tmpstring.GetLength()+1;  
  LPCTSTR   path="Software\\Microsoft\\MS   Setup   (ACME)\\User   Info"   ;  
   
  long   ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_WRITE,   &hKEY);  
  if(ret!=ERROR_SUCCESS)  
  {    
  MessageBox("错误:   修改无法打开有关的hKEY!");  
  return;    
  }  
  ret=::RegSetValueEx(hKEY,"DefName",NULL,type,tmp,size);  
  if(ret!=ERROR_SUCCESS)  
  {    
  MessageBox("错误:   无法修改有关注册表信息!");  
  return;  
  }  
  ::RegCloseKey(hKEY);  
  }Top

2 楼GUID(全世界我最菜)回复于 2003-08-05 08:47:26 得分 0

来晚了,RegOpenKeyExTop

3 楼iicup(双杯献酒)回复于 2003-08-05 08:53:11 得分 0

关于注册表操作,  
  详细内容在:  
  MSDN\Platform   SDK\Base   Services\RegistryTop

4 楼awnucel(西大耻犹未雪,南京恨何时灭&抵制日货)回复于 2003-08-05 09:17:24 得分 10

来晚了,就   COPY一下  
  //这两个方法分别是读取和设置注册表的,你改一下试试。  
   
   
  void   CRegistryView::OnButton1()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  HKEY   hKEY;  
  LPCTSTR   path="Software\\Microsoft\\MS   Setup   (ACME)\\User   Info";  
   
  long   ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,   0,   KEY_READ,&hKEY);  
  /* LPVOID   lpMsgBuf;  
  FormatMessage(    
          FORMAT_MESSAGE_ALLOCATE_BUFFER   |    
          FORMAT_MESSAGE_FROM_SYSTEM   |    
          FORMAT_MESSAGE_IGNORE_INSERTS,  
          NULL,  
          ret,  
          MAKELANGID(LANG_NEUTRAL,   SUBLANG_DEFAULT),   //   Default   language  
          (LPTSTR)   &lpMsgBuf,  
          0,  
          NULL    
  );  
  //   Process   any   inserts   in   lpMsgBuf.  
  //   ...  
  //   Display   the   string.  
  MessageBox(   NULL,   (LPCTSTR)lpMsgBuf,   "Error",   MB_OK   |   MB_ICONINFORMATION   );  
  //   Free   the   buffer.  
  LocalFree(   lpMsgBuf   );  
  */  
  if(ret!=ERROR_SUCCESS)   //如果无法打开hKEY,则终止程序的执行  
  {  
  MessageBox("错误:   查询无法打开有关的hKEY!");  
  return;  
  }  
   
  unsigned   char   tmp[256]="\0";  
  DWORD   type=REG_SZ;  
  DWORD   size=80;  
  ret=::RegQueryValueEx(hKEY,"DefName",   NULL,&type,tmp,&size);  
  if(ret!=ERROR_SUCCESS)  
  {  
  MessageBox("错误:无法查询有关注册表信息!");  
  return;  
  }  
  CString   tmpstring=CString(tmp);  
  //AfxMessageBox(tmpstring);  
  SetDlgItemText(IDC_EDIT1,tmpstring);  
  ::RegCloseKey(hKEY);  
  }  
   
  void   CRegistryView::OnButton2()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  unsigned   char   tmp[256];  
  CString   tmpstring1;  
  if(!GetDlgItemText(IDC_EDIT1,tmpstring1))  
  {  
                    MessageBox("错误:请输入正确信息!");  
  }  
  sprintf((char   *)tmp,"%s",tmpstring1);  
  CString   tmpstring=tmp;  
   
  HKEY   hKEY;  
  DWORD   type=REG_SZ;  
  DWORD   size=tmpstring.GetLength()+1;  
  LPCTSTR   path="Software\\Microsoft\\MS   Setup   (ACME)\\User   Info"   ;  
   
  long   ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_WRITE,   &hKEY);  
  if(ret!=ERROR_SUCCESS)  
  {    
  MessageBox("错误:   修改无法打开有关的hKEY!");  
  return;    
  }  
  ret=::RegSetValueEx(hKEY,"DefName",NULL,type,tmp,size);  
  if(ret!=ERROR_SUCCESS)  
  {    
  MessageBox("错误:   无法修改有关注册表信息!");  
  return;  
  }  
  ::RegCloseKey(hKEY);  
  }  
  Top

相关问题

  • 求注册表修改程序,
  • 可恶,浏览网页被修改了注册表,ASP程序能修改客户端注册表吗?
  • 大侠:如何在程序中修改注册表?
  • 关于程序方式修改注册表的问题
  • 注册表中的位置——修改启动程序!
  • 关于开启自动启动程序的注册表修改
  • 我的修改注册表的小程序谁想使用?
  • 我的程序是否可以截获别的程序修改注册表?
  • 是否可以编一DOS程序访问和修改注册表呢?
  • 如何在BCB程序中修改注册表。请举简例sjsjsjd@163.com。

关键词

  • idc
  • 信息
  • tmpstring
  • lpmsgbuf
  • 注册表
  • hkey
  • cregistryview
  • ret
  • 程序
  • onbutton

得分解答快速导航

  • 帖主:cjxs
  • laodie
  • awnucel

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo