CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

windows注册表

楼主abcdef(abcdef)2001-01-04 14:00:00 在 VC/MFC / 基础类 提问

由于现在要编写一个程序,要进行一些关于注册表的操作,由于我以前没操作过注册表,请各位高手指点,最好给我一个源程序,只要能显示一下注册表的操作就可以,万分感谢  
  Email:wh_lhj@china.com 问题点数:59、回复次数:5Top

1 楼Smile_Tiger(笑面虎)回复于 2001-01-04 14:07:00 得分 0

搜索   与“注册表”有关的贴子Top

2 楼hnxrm(浪子)回复于 2001-01-04 14:13:00 得分 0

查看msdn.Top

3 楼adrianx(蓝色心情)回复于 2001-01-04 14:16:00 得分 29

下边这个例子是MSDN中的,hKey是个已用RegOpenKey或RegOpenKeyEx打开的注册键HKEY  
  如RegOpenKeyEx   (HKEY_CLASSES_ROOT,   "Testkey",   0,   WRITE_OWNER,   &hKey);  
  使用完了用RegCloseKey(hKey);关闭句柄  
  VOID   QueryKey(HWND   hDlg,   HANDLE   hKey)    
  {    
          CHAR           achKey[MAX_PATH];    
          CHAR           achClass[MAX_PATH]   =   "";     //   buffer   for   class   name    
          DWORD         cchClassName   =   MAX_PATH;     //   length   of   class   string    
          DWORD         cSubKeys;                                   //   number   of   subkeys    
          DWORD         cbMaxSubKey;                             //   longest   subkey   size    
          DWORD         cchMaxClass;                             //   longest   class   string    
          DWORD         cValues;                             //   number   of   values   for   key    
          DWORD         cchMaxValue;                     //   longest   value   name    
          DWORD         cbMaxValueData;               //   longest   value   data    
          DWORD         cbSecurityDescriptor;   //   size   of   security   descriptor    
          FILETIME   ftLastWriteTime;             //   last   write   time    
     
          DWORD   i,   j;    
          DWORD   retCode,   retValue;    
     
          CHAR     achValue[MAX_VALUE_NAME];    
          DWORD   cchValue   =   MAX_VALUE_NAME;    
          CHAR     achBuff[80];    
     
          //   Get   the   class   name   and   the   value   count.    
          RegQueryInfoKey(hKey,                 //   key   handle    
                  achClass,                                 //   buffer   for   class   name    
                  &cchClassName,                       //   length   of   class   string    
                  NULL,                                         //   reserved    
                  &cSubKeys,                               //   number   of   subkeys    
                  &cbMaxSubKey,                         //   longest   subkey   size    
                  &cchMaxClass,                         //   longest   class   string    
                  &cValues,                                 //   number   of   values   for   this   key    
                  &cchMaxValue,                         //   longest   value   name    
                  &cbMaxValueData,                   //   longest   value   data    
                  &cbSecurityDescriptor,       //   security   descriptor    
                  &ftLastWriteTime);               //   last   write   time    
     
          SetDlgItemText(hDlg,   IDE_CLASS,   achClass);    
          SetDlgItemInt(hDlg,   IDE_CVALUES,   cValues,   FALSE);    
     
          SendMessage(GetDlgItem(hDlg,   IDL_LISTBOX),    
                  LB_ADDSTRING,   0,   (LONG)   "..");    
     
          //   Enumerate   the   child   keys,   looping   until   RegEnumKey   fails.   Then    
          //   get   the   name   of   each   child   key   and   copy   it   into   the   list   box.    
   
          SetCursor(LoadCursor(NULL,   IDC_WAIT));    
          for   (i   =   0,   retCode   =   ERROR_SUCCESS;    
                          retCode   ==   ERROR_SUCCESS;   i++)    
          {    
                  retCode   =   RegEnumKey(hKey,   i,   achKey,   MAX_PATH);    
                  if   (retCode   ==   (DWORD)ERROR_SUCCESS)    
                  {  
                          SendMessage(GetDlgItem(hDlg,   IDL_LISTBOX),    
                                  LB_ADDSTRING,   0,   (LONG)   achKey);    
                  }  
          }    
          SetCursor(LoadCursor   (NULL,   IDC_ARROW));    
     
          //   Enumerate   the   key   values.    
          SetCursor(LoadCursor(NULL,   IDC_WAIT));    
     
          if   (cValues)    
          {  
                  for   (j   =   0,   retValue   =   ERROR_SUCCESS;    
                                  j   <   cValues;   j++)    
                  {    
                          cchValue   =   MAX_VALUE_NAME;    
                          achValue[0]   =   '\0';    
                          retValue   =   RegEnumValue(hKey,   j,   achValue,    
                                  &cchValue,    
                                  NULL,    
                                  NULL,         //   &dwType,    
                                  NULL,         //   &bData,    
                                  NULL);       //   &bcData    
     
                          if   (retValue   !=   (DWORD)   ERROR_SUCCESS   &&    
                                          retValue   !=   ERROR_INSUFFICIENT_BUFFER)    
                          {    
                                  wsprintf   (achBuff,    
                                          "Line:%d   0   based   index   =   %d,   retValue   =   %d,   "    
                                            "ValueLen   =   %d",    
                                            __LINE__,   j,   retValue,   cchValue);    
                                  MessageBox   (hDlg,   achBuff,   "Debug",   MB_OK);    
                          }    
     
                          achBuff[0]   =   '\0';    
     
                          //   Add   each   value   to   a   list   box.    
                          if   (!lstrlen(achValue))    
                                  lstrcpy(achValue,   "<NO   NAME>");    
                          wsprintf(achBuff,   "%d)   %s   ",   j,   achValue);    
                          SendMessage(GetDlgItem(hDlg,IDL_LISTBOX2),    
                                  LB_ADDSTRING,   0,   (LONG)   achBuff);    
                  }    
     
          SetCursor(LoadCursor(NULL,   IDC_ARROW));    
  }   Top

4 楼eyeblue(李洋)回复于 2001-01-04 14:39:00 得分 30

1,写注册表  
  HKEY   hkey;  
  RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\MYSoft",&hkey);       //创建一个主键,在regedit里象文件夹  
  RegSetValueEx(hkey,"MYName",0,REG_SZ,(LPBYTE)szName,strlen(szName));       //把szName的值放到子键MYName上去,如果没有该子键则自动  
   
  被创建,在regedit里有'ab'图标的  
  RegSetValueEx(hkey,"MYYear",0,REG_DWORD,(LPBYTE)&iMYYear,sizeof(int));       //整形iMYYear的值放到子键MYName上去,如果没有该子键  
   
  则自动被创建,在regedit里有'ab'图标的  
  RegCloseKey(hkey);     //关闭  
   
  2,读注册表  
  HKEY   hkey=NULL;  
  iRet=RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\MYSoft",&hkey);     //打开主键MYSoft  
  if(hkey   ==   NULL)  
        return   false;  
  int   iQueryType=REG_DWORD;       //子键类型DWORD  
  int   iResv=0;  
  int   usize=sizeof(int);  
  iRet=RegQueryValueEx(hkey,"MYYear",NULL,(LPDWORD)&iQueryType,(LPBYTE)&iMYYear,(LPDWORD)&usize);     //读子键MYYear到整形iMYYear  
  iQueryType=REG_SZ;     //子键类型字符串  
  usize=32;         //目标大小  
  iRet=RegQueryValueEx(hkey,"MYName",NULL,(LPDWORD)&iQueryType,(LPBYTE)szName,(LPDWORD)&usize);     //读子键MYName到字符串szName  
  RegCloseKey(hkey);     //关闭  
    Top

5 楼skt642()回复于 2001-05-31 18:01:00 得分 0

45738关注!Top

相关问题

  • Windows XP注册表问题
  • 如何遍历Windows中的注册表?
  • 关于windows下的注册表?
  • Windows xp注册表被禁止后??
  • Python 如何操作 Windows 注册表??
  • windows在造访系统注册表是碰到错误,该怎样修复注册表
  • 寻找能监视Windows注册表改动的软件
  • 如何通过注册表获得Windows的安装路径?
  • 小问题一个,如何让windows重载注册表?????????????
  • ASP能否实现读写操作Windows的注册表Registry?

关键词

  • null
  • 注册表
  • hkey
  • longest
  • 子键
  • szname
  • lpbyte
  • myname
  • dword
  • 创建

得分解答快速导航

  • 帖主:abcdef
  • adrianx
  • eyeblue

相关链接

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

广告也精彩

反馈

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