注册表编程浅解析
来源:互联网 发布:8位数据奇偶校验算法 编辑:程序博客网 时间:2024/05/08 03:58
什么是注册表?注册表本质上就是windows里的一个数据库。支撑其实现的结构是树形结构。注册表里面存储的就是一些乱七八糟的什么配置信息啊,用户信息啊等,具体的自己google去吧!
既然注册表是用树形结构保存的,那么我就按照树的结构来剖析吧。
<一>注册表结构
键:键是注册表特有名称之一,你可以把键理解成文件夹,理解成一个表的表项(注册表本身也可以理解成一个表)。但是在这里,键其实就是这棵树的非叶子节点。
从根节点开始,这棵树主要可以分为五大分支,分别记录五大类信息,具体如下(参考MSDN)
HKEY_LOCAL_MACHINE
包含关于本地计算机系统的信息,包括硬件和操作系统数据,如总线类型、系统内存、设备驱动程序和启动控制数据。
HKEY_CLASSES_ROOT
包含用于各种 OLE 技术和文件类关联数据的信息。如果 HKEY_LOCAL_MACHINE\SOFTWARE\Classes 或HKEY_CURRENT_USER\SOFTWARE\Classes 中存在相应的项或值,则在 HKEY_CLASSES_ROOT 中会存在某个特定的项或值。如果两处均存在项或值,则 HKEY_CURRENT_USER 版本将是出现在 HKEY_CLASSES_ROOT 中的那一个。
HKEY_CURRENT_USER
包含当前以交互方式(与远程方式相反)登录的用户的用户配置文件,包括环境变量、桌面设置、网络连接、打印机和程序首选项。该子树是HKEY_USERS 子树的别名,它指向 HKEY_USERS\当前用户的安全 ID。
HKEY_USERS
包含关于动态加载的用户配置文件和默认配置文件的信息。它包含同时出现在 HKEY_CURRENT_USER 中的信息。正在远程访问服务器的用户在服务器上的该项下没有配置文件;他们的配置文件将加载到自己计算机的注册表中。
HKEY_CURRENT_CONFIG
包含在启动时由本地计算机系统使用的硬件配置文件的相关信息。该信息用于配置一些设置,如要加载的设备驱动程序、显示时要使用的分辨率。该子树属于 HKEY_LOCAL_MACHINE 子树,它指向 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current。
每个根项名均以 HKEY_ 开头,以便向软件开发人员指出这是可以由程序使用的句柄。句柄是一个值,用于识别资源。有了句柄,程序就能对资源进行访问。
值:值就是注册表里存储的信息。值包括三个部分:值名称(name)、值类型(type)和值本身(value)。在这颗树里,值就是叶子节点。每个叶子节点都包含这三个部分,记录着系统或用户的某一个配置信息。
.
<二>操作注册
注册表的操作无非就是依据注册表的结构来的。比如创建键:就是给这棵树添个树枝。打开键:这个还不太好比喻,暂且想象是爬到这个树枝上玩吧。写入值:找到某个页节点然后写入信息。最后就是读取值。基本的操作就这四种。其实win32 API提供了大量的函数来方便程序员管理注册表,最基本的也就这些。如果编程中想用其他的,自己MSDN吧。
给一个思路:只要你能想到的合理的操作,就大胆MSDN,windows不会让你失望的。
1)创建键:
LONG RegCreateKey(HKEY hkey,LPCTSTR lpSubKey,PHKEY phkResult);
函数的具体参数含义和用法并不是讲解的重点,也不是应该掌握的重点,这些完全可以顺手MSDN到,理解原理才是关键。
2)打开键:
LONG RegOpenKey(HKEY hkey,LPCTSTR lpSubKey,PHKEY phkResult);
3)写入值:
LONG RegSetValue(HKEY hkey,LPCTSTR lpSubKey,DWORD dwType,LPCTSTR lpData,DWORD cbData);
4)读取值:
LONG RegQueryValue(HKEY hkey,LPCTSTR lpSubKey,LPTSTR lpValue,PLONG lpcbValue);
<三>简单demo(请include<Windows.h>)
void RegWrite(){HKEY hKey;RegCreateKeyA(HKEY_LOCAL_MACHINE,"SOFTWARE\\XIAYONG",&hKey);RegSetValueA(hKey,NULL,REG_SZ,"XIAYONG",strlen("xiayong"));RegCloseKey(hKey);}int main() { RegWrite();system("pause");return 0; }
- 注册表编程浅解析
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表编程
- 注册表模式解析
- 注册表原理解析说明
- java程序在windows后台启动
- 使用OS Watcher监控操作系统
- Nginx源码结构和编译配置configure shell
- IE下 Ext js报错:缺少标示符、字符串或数字
- setMapoutputKeyClass()方法
- 注册表编程浅解析
- linux 内核地址和进程地址空间分布
- 关于腾讯tadb*exe抢占adb优先级的问题
- 深入理解Oracle索引(18):函数索引的陷阱以及如何避免索引被污染
- Android学习篇章6-Spinner下拉列表的动态静态加载
- 过滤器的使用,这个方法可以在选择对象时候过滤到其他的只选自己想要的类型。
- 关于虚拟机ubuntu多虚拟硬盘(VDMK)的使用方法
- iOS 数据持久性存储--属性列表存储
- Spring3配置简述