Windows api关于注册表的操作经验和总结

读取注册表常用的函数
RegOpenKeyEx 用于打开一个键
RegSetValueEx 用于设置一个键的键值
RegQueryValueEx 用于读取一个键的值
RegCloseKey 用于关闭RegOpen打开的键

RegQueryValueEx通常连用两次来读取键值,第一次只读取键的大小,然后分配内存,然后再用一次RegQueryValueEx来读取键值到buffer。
下面是一个读取windows下的path键值的例子

 HKEY hk;

  int result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
               _T("SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment"),
               NULL,
               KEY_READ, &hk );

  if(result != ERROR_SUCCESS)
  {
    if(result == ERROR_FILE_NOT_FOUND)
    {

      MessageBox(g.hwnd,_T("no such key in RegOpenKeyEx"),_T("title"),MB_ICONWARNING);
    }

    else

    return;
  }

  DWORD lsize;

  result = RegQueryValueEx(hk, _T("Path"),NULL,NULL,
              NULL, &lsize);

  if(result != ERROR_SUCCESS)
  {
    if(result == ERROR_FILE_NOT_FOUND)
    {

      MessageBox(g.hwnd,_T("no such key in RegQueryValue"),_T("title"),MB_ICONWARNING);
    }
    else if(result == ERROR_MORE_DATA)
    {
      MessageBox(g.hwnd,_T("need more buffer"),_T("title"),MB_ICONWARNING);
    }
    else

    return;
  }
  TCHAR *value = (TCHAR * )malloc(lsize * sizeof(TCHAR));
  result = RegQueryValueEx(hk, _T("Path"),NULL,NULL,
              (LPBYTE)value, &lsize);
  if(result != ERROR_SUCCESS)
  {
    if(result == ERROR_FILE_NOT_FOUND)
    {

      MessageBox(g.hwnd,_T("no such key in RegQueryValue"),_T("title"),MB_ICONWARNING);
    }
    else if(result == ERROR_MORE_DATA)
    {
      MessageBox(g.hwnd,_T("need more buffer"),_T("title"),MB_ICONWARNING);
    }
    else

    return;
  }
  SetWindowText(g.hwndEdit,value);
  free(value);
  RegCloseKey(hk);

新手常见问题
RegSetValueEx运行时失败,返回代码为5,
解决方法:这种情况是由于对注册表访问权限不够,拒绝访问的意思,因此,注意看看权限是否不够,如果改为
KEY_ALL_ACCESS就没问题了,这样读写等权限都可以。

(0)

相关推荐

  • Windows api关于注册表的操作经验和总结

    读取注册表常用的函数 RegOpenKeyEx 用于打开一个键 RegSetValueEx 用于设置一个键的键值 RegQueryValueEx 用于读取一个键的值 RegCloseKey 用于关闭RegOpen打开的键 RegQueryValueEx通常连用两次来读取键值,第一次只读取键的大小,然后分配内存,然后再用一次RegQueryValueEx来读取键值到buffer. 下面是一个读取windows下的path键值的例子 HKEY hk; int result = RegOpenKeyE

  • Windows XP系统注册表六则设置技巧

    用XP已经好久了,本人试验和整理了许多很有意思的注册表修改技巧,这里写出来给大家参考.说到注册表修改,有一句话总是不得不提:小心谨慎.修改之前必须备份,一步失误可能让你的机器翻脸不认人.在下面的叙述中,如果指定位置没有这里所说的键/值,那么你得自己新建一个.除非特别说明,所有这里谈到的值都是REG_DWORD类型. 一.提高XP的响应速度 找到HKEY_CURRENT_USERControl PanelDesktop子键,修改HungAppTimeout值.HungAppTimeout值表示系统

  • Windows XP系统注册表十则设置技巧

    用XP已经好久了,本人试验和整理了许多很有意思的注册表修改技巧,这里写出来给大家参考.说到注册表修改,有一句话总是不得不提:小心谨慎.修改之前必须备份,一步失误可能让你的机器翻脸不认人.在下面的叙述中,如果指定位置没有这里所说的键/值,那么你得自己新建一个.除非特别说明,所有这里谈到的值都是REG_DWORD类型. 一.提高XP的响应速度 找到HKEY_CURRENT_USERControl PanelDesktop子键,修改HungAppTimeout值.HungAppTimeout值表示系统

  • Windows下利用注册表的小技巧

    作者:高山 一,WIX9X下防止匿名用户登录 虽然"WIN9X"可以为每个用户定制各自的使用界面并指定口令,但任何人都能通过点击登录窗口中的"取消"或按"ESC"键进入系统,即所谓匿名登录.下述方法可以防止匿名用户登录:在"开始"菜单中选择"运行"命令,在弹出的"运行"命令对话框中键入"regedit"命令,按Enter.打开"注册表编辑器". 在

  • 浅谈Windows XP的注册表备份

    作者:高山 经常系统错误,有时甚至引起系统崩溃的情况,这时备份就显得很重要了,没有人愿意系统崩溃而只得重新装Windows XP.你可以选用不同的方法来备份你的注册表,你也可以把你的备份版本放在多种介质上,但是你首先必须明白你的计算机网络正使用何种文件系统类型.Windows XP支持FAT和NTFS两种不同的文件系统. 在这里我先介绍一下FAT,FAT32以及NTFS. 文件分配表(FAT) 一种供MS-DOS及其它Windows操作系统对文件进行组织与管理的文件系统.文件分配表(FAT)是当

  • 二十九、教你备份与恢复Windows 2000注册表

    二十九.教你备份与恢复Windows 2000注册表  Windows 2000将它的配置信息存储在注册表的数据库中,其中包含了每个计算机用户的配置文件,以及有关系统硬件.已安装的程序和属性设置等信息,Windows 2000在运行过程中要一直引用这些信息.注册表是以二进制形式存储在硬盘上,错误地编辑注册表可能会严重损坏系统.所以,在更改注册表之前,强烈建议备份注册表信息.为了防止在修改注册表的时候发生致命错误,有必要了解一下注册表文件的备份和恢复方法.除此之外,为了研究注册表的结构,还可以将注

  • 修改Windows注册表系统文件为宽带加速

    随着网络技术的发展,Internet的接入速度越来越快,从最初的56K"猫",一直到10M/100M高速光纤,接入方式多种多样.而作为Internet的末端,Windows操作系统为了支持不同的接入设备,适应不同的网络环境,在程序设置方面也相对保守一些,因此,常有用户反映"宽带不快",一些网络优化软件则应运而生,通过修改Windows操作系统的注册表或相关文件来达到为宽带提速的目的,如Windows优化大师.ADSL超频奇兵等,但效果却不太明显. Speedguid

  • C# 操作Windows注册表的实现方法

    目录 代码示例 示例一:禁用 Windows 7 系统自动更新 示例二:禁用 Windows 10 提醒 常见问题 本文将给出操作注册表的C#代码以及开发中遇到的问题. 代码示例 通过RegistryKey类的OpenBaseKey方法获取注册表根节点. public static RegistryKey OpenBaseKey(RegistryHive hKey, RegistryView view) 示例一:禁用 Windows 7 系统自动更新 // win7自动更新设置的注册表路径 st

  • 对注册表进行编辑的三种途径

    了解了关于注册表的基本内容之后,我们就可以正式进入我们所要讨论的话题了:对注册表进行编辑修改!一般来说,要想对注册表进行增.删.改,可以有以下三种途径: 第一种途径:直接修改(最不安全,但最直接最有效) 就是通过注册表编辑器直接的来修改注册表的键值数据项,这样做会避免在注册表中留下垃圾(虽然都很小,但越来越多会拖慢系统速度),但是要求用户有一定的注册表知识,熟悉注册表内部结构而且一定要小心谨慎. 注册表编辑器是一个可以让你改变系统注册设定的高级工具WIN98注册表编辑器的常用操作注册表编辑器是一

  • Win2k注册表备份恢复详解

    Windows 2000 将它的配置信息存储在名为注册表的数据库中,其中包含了每个计算机用户的配置文件,以及有关系统硬件.已安装的程序和属性设置等信息,Windows 2000 在运行过程中要一直引用这些信息.注册表是以二进制形式存储在硬盘上,错误地编辑注册表可能会严重损坏系统.所以,在更改注册表之前,强烈建议备份注册表信息.为了防止在修改注册表的时候发生致命错误,有必要了解一下注册表文件的备份和恢复方法.除此之外,为了研究注册表的结构,还可以将注册表中的某一主键或子键保存为文本文件,或者打印出

随机推荐