注册表 API

   
RegCreateKey 建立或打开注册表项
RegOpenKey 打开注册表项
RegSetValue 写入注册表 (写目录或子目录的默认值)
RegSetValueEx 写入注册表 (写键名和键值)
RegQueryValue 读取注册表(读目录的默认值)
RegQueryValueEx 读取注册表(读指定键的值)
RegDeleteKey(KEY hKey,LPCTSTR lpSubKey) 删除注册表项
RegDeleteValue(HKEY hKey,LPCTSTR lpValueName) 删除注册表键值
RegEnumKey 枚举子目录
RegEnumKeyEx 枚举键名
RegEnumValue 枚举键名和键值

RegCreateKey 函数

RegOpenKey 函数

LONG RegCreateKey( KEY hKey, LPCTSTR lpSubKey, PHKEY phkResult)
LONG RegOpenKey( KEY hKey, LPCTSTR lpSubKey, PHKEY phkResult)
参数 描述 示例
hKey 注册表项的句柄 HKEY 常量有:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_PERFORMACNCE_DATA (WIN NT)
HKEY_DYN_DATA (WIN9x)

lpSubKey 注册表路径  
phkResult HKEY 注册表句柄, 输出参数  
返回值 0 成功  

RegSetValue 函数

RegSetValueEx 函数

LONG RegSetValue(
    HKEY hKey,
    LPCTSTR lpSubKey,
    DWORD dwType,
    LPCTSTR lpData,
    DWORD cbData
)
LONG RegSetValueEx(
    HKEY hKey,
    LPCTSTR lpValueName,
    DWORD reserved,
    DWORD dwType,
    LPCTSTR lpData,
    DWORD cbData
)
参数 描述
hKey 注册表项的句柄
lpSubKey 子目录名, 自动创建, 若为 NULL 或 "", 写 hKey 的默认值
dwType 存储的数据类型, 参见 dwType
lpData 数据指针
cbData 数据大小
lpValueName 键的名称
reserved 保留, 必须为 0

RegQueryValue 函数

RegQueryValueEx 函数

LONG RegQueryValue(
    HKEY hKey,
    LPCTSTR lpSubKey,
    LPTSTR lpValue,
    PLONG lpcbValue
)
LONG RegQueryValueEx(
    HKEY hKey,
    LPTSTR lpValueName,
    LPDWORD lpReserved,
    LPDWORD lpType,
    LPBYTE lpData,
    LPDWORD lpcbData
)
参数 描述
hKey 注册表项的句柄
lpSubKey 子目录名, 可为 NULL 或 ""
lpValue 字符串缓冲区, 或为 NULL 则不取数据
lpcbValue 字符串缓冲区长度变量指针, 输入

实际数据长度, 输出

lpValueName 键的名称, 或为 NULL 或 "", 则取默认值
reserved 保留, 必须为 0
lpType 类型接收地址
lpData 数据接收缓冲区, 或为 NULL 不取数据
lpcbData 数据缓冲区长度变量指针, 输入

实际数据长度(含 \0 结尾), 输出

返回值 成功返回 ERROR_SUCCESS

RegEnumKey 函数

RegEnumKeyEx 函数

RegEnumKey(HKEY hKey,DWORD dwIndex,LPTSTR lpName,DWORD cbName)
LONG RegEnumKeyEx(
    HKEY hKey,
    DWORD dwIndex,
    LPTSTR lpName,
    LPDWORD lpcName,
    LPDWORD lpReserved,
    LPTSTR lpClass,
    LPDWORD lpcClass,
    PFILETIME lpftLastWriteTime
);
参数 描述
hKey 注册表项的句柄
dwIndex 序号, 从 0 起
lpName 名字缓冲区
cbName 缓冲区大小
lpcName 名字缓冲区大小, 输入输出参数
lpReserved 保留, 总是 0
lpClass 分类缓冲区, 输出, 设为 NULL 可在 lpcClass 中取得大小
lpcClass 分类缓冲区大小, 输入输出
lpftLastWriteTime 时间结构地址, 输出最后一次写入日期
返回值 ERROR_SUCCESS : 成功
ERROR_NO_MORE_ITEMS : 没有更多的项目
ERROR_MORE_DATA : 缓冲区不够

RegEnumValue 函数

LONG RegEnumValue (
    HKEY hKey,
    DWORD dwIndex,
    LPSTR lpValueName,
    LPDWORD lpcbValueName,
    LPDWORD lpReserved,
    LPDWORD lpType,
    LPBYTE lpData,
    LPDWORD lpcbData
);
参数 描述
hKey 注册表项的句柄
dwIndex 序号, 从 0 起
lpValueName 键名缓冲区
lpcbValueName 键名缓冲区大小, 输入输出
lpReserved 保留, 总是 0
lpType 类型地址, 输出
lpData 数据地址, 输出
lpcbData 数据地址大小, 输入输出

dwType 常量

常量 描述
REG_BINARY 二进制数据
REG_DWORD 32 位数字
REG_DWORD_LITTLE_ENDIAN 低字节在前的 32 位数字, 同上
REG_DWORD_BIG_ENDIAN 高字节在前的 32 位数字
REG_EXPAND_SZ 以 0 结尾的字符串, 包含对环境变量(%PATH)的未扩展引用
REG_LINK Unicode 格式的带符号链接
REG)MULTI_SZ 以 0 结尾的字符串数组, 以连接两个 0 为终止符
REG_NONE 未定义类型
REG_RESOURCE_LIST 设备驱动器资源列表
REG_SZ 以 0 结尾的字符串

示例:

HKEY hkey1, hkey2, hkey3;

RegOpenKey(HKEY_CURRENT_USER,"software", &hkey1);
RegOpenKey(hkey1,"tcmessage",&hkey2);
RegOpenKey(hkey2,"auto",&hkey3);

a = RegSetValue(hkey3,"set",REG_SZ,"tancheng123",4);

RegCloseKey(hkey1);
RegCloseKey(hkey2);
RegCloseKey(hkey3);