zoukankan      html  css  js  c++  java
  • 加密与解密学习笔记5-Windows注册表

    从Win 95开始,微软在Windows中引入了注册表(registry)的概念,注册表是Windows的核心数据库,包含各种参数,直接控制Windows的启动、硬件驱动程序的装载、应用程序的各种状态信息和数据等。
     
    注册表被组成子树及其项、子项、值项的分层结构,就像磁盘文件系统的目录结构一样,每个键都包含一组特定的信息,每个键的键名都是和它所包含的信息相关联的。
     
    注册表的根主键不能被删除,也不可以添加新的根主键。
    结构含义如下:
      1.HKEY_CLASSES_ROOT(简称:HKCR,包含扩展名和COM组件类的信息)
      该主键用于管理文件系统,记录的是Windows 操作系统中所有数据文件的信息,主要记录不同文件的文件名后缀和与之对应的应用程序。当用户双击一个文档时,系统可以通过这些信息启动相应的应用程序。
      2.HKEY_CURRENT_USER(简称:HKCU,包含当前登录用户相关的软件配置和参数)
      该主键用于管理当前用户的配置情况。在这个主键中我们可以查阅计算机中登录的用户信息、密码等相关信息。
      3.HKEY_LOCAL_MACHINE(简称:HKLM)
      该主键用于管理系统中的所有硬件设备的配置情况,在该主键中存放的是用来控制系统和软件的设置。由于这些设置是针对那些使用Windows 系统的用户而设置的,是一个公共配置信息,所以它与具体用户无关。
    其中,HKLMSOFTWARE子键存储了一些Windows系统软件的配置信息,还存储了第三方应用程序的系统设置,如:应用程序中文件的路径和目录路径,以及相关使用许可证和期限信息。
      4.HKEY_USERS(简称:HKU,包含了关于动态加载的用户配置文件和默认的配置文件的信息,同时还包含了出现在HKEY_CURRENT_USER中的信息)
      该主键用于管理系统中所有用户的配置信息,电脑系统中每个用户的信息都保存在该文件夹中,如用户在该系统中的一些口令、标识等。
      5.HKEY_CURRENT_CONFIG(包含了启动时由本地计算机系统使用的硬件配置文件的相关信息)
      该主键用于管理当前系统用户的系统配置情况,如该用户自定义的桌面管理、需要启动的程序列表等信息
     
    另外,HKEY_DYN_DATA是Windows 9x注册表的子目录树,不被windows 2000/xp使用;
    HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER是注册表中两个最重要的部分,应用程序一般在这里存储配置信息。
    每个注册表项或子项都可以包含称为值项的数据,值项:一部分存储每个用户的特殊信息,一部分则存储应用于计算机所有用户的信息。
    值项包括:指的名称、值的数据类型、值本身
    注册表的数据类型:
    REG_SZ:
    (说明:固定长度的文本串)
    REG_FULL_RESOURCE_DESCRIPTOR:
    (说明:设计用来存储硬件元件或驱动程序的资源列表的一列嵌套数据)
    REG_MULTI_SZ:
    (说明:多个字符串,包含格式可被用户读取的列表或多值的值通常为该类型。项目用空格、逗号或其他标记分开)
    REG_BINARY:
    (说明:未处理的二进制数据,多数硬件组件信息都以二进制数据格式存储,而以十六进制格式显示在注册表编辑器中)
    REG_DWORD:
    (说明:数据由4字节长度的数表示,许多设备驱动程序和服务的参数是这种类型,并在注册表编辑器中以二进制、十六进制或十进制的格式显示)
    REG_EXPAND_SZ:
    (说明:长度可变的数据串,该数据类型包含在程序或服务使用该该数据时确定的变量)
     
    注册表相关函数
    1.RegOpenKeyEx函数
    此函数在ADVAPI32.DLL用户模块中,它的作用是打开子键,函数原型:
    LONG RegOpenKeyEx(
    HKEY hKey, //要打开的主键句柄或标准项名
    LPCWSTR lpSubKey, //要打开的子键名地址
    DWORD ulOptions, //保留,必须为0
    REGSAM samDesired, //存取掩码
    PHKEY phkResult //存放打开子键句柄的地址
    );
    返回值:如果成功就返回0(ERROR_SUCCESS);失败则返回非零错误代码
    2、RegQueryValueEx函数
    此函数在ADVAPI32.DLL用户模块中,它的作用是获取一个项的设置值,函数原型:
    LONG RegQueryValueEx(
    HKEY hKey, //需要查找的主键的句柄或标准项名
    LPCWSTR lpValueName, //需要查找的子键名地址
    LPDWORD lpReserved, //保留,必须为0
    LPDWORD lpType, //存放子键类型的缓冲区地址
    LPBYTE lpData, //存放返回结果的缓冲区地址
    LPDWORD lpcbData //存放返回结果字节长度的缓冲区地址
    );
    返回值:如果成功就返回0(ERROR_SUCCESS);失败则返回非零错误代码
    3、RegSetValueEx函数
    此函数在ADVAPI32.DLL用户模块中,它的作用是设置指定项的值,函数原型:
    RegSetValueEx(
    HKEY hKey, //需要设置键值的主键句柄或一个标准项名
    LPCWSTR lpValueName, //需要设置的子键名地址
    DWORD Reserved, //保留,必须为0
    DWORD dwType, //键值类型
    CONST BYTE * lpData, //所设置的数据地址
    DWORD cbData //所设置的数据字节长度
    );
    返回值:如果成功就返回0(ERROR_SUCCESS);失败则返回非零错误代码
    用Win32 API操作windows注册表步骤:
    1、用RegOpenKey()或RegOpenKeyEx()打开想要操作的主键,获得一个句柄
    2、将句柄传递给RegQueryValueEx(),RegSetValueEx()等函数来读写相应的键值
    3、操作完毕后用RegCloseKey()关闭先前获得的句柄
     
    注册表分析软件(两大类):
    一类:注册表读写监视软件
    另一类:注册表比较软件
     
    1、注册表“监视员”-- Regmon
    注册表实时监视软件,它将与注册表相关的一切操作(如:读取、修改、出错信息等)全部记录下来供用户参考,并允许用户对记录的信息进行保存、过滤、查找
    2、注册表照相机 RegSnap
    是一款分析windows注册表及系统配置文件更改的工具,原理:在不同时间段对注册表“拍照”,然后比较“拍照”结果,进而分析出注册表与系统文件的变化
    3、注册表比较工具RegShot
    是一个小巧的注册表静态比较工具,能够快速地帮助发现注册表变化,国产免费软件;作者:TiANWEI
  • 相关阅读:
    Tornado web 框架
    mysql_orm模块操作数据库(17.6.29)
    mysql小结篇3 索引、分页、执行计划--(17.6.28)
    Oracle触发器Trigger2行级
    Oracle触发器Trigger基础1
    Oracle函数function
    Oracle异常的抛出处理
    Oracle利用过程procedure块实现银行转账
    Oracle存储过程procedure
    PL/SQL块loop..各种循环练习
  • 原文地址:https://www.cnblogs.com/guiguxiaosheng/p/12304248.html
Copyright © 2011-2022 走看看