首先来认识一下键,项,值吧:

左边有五个根键:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USER
HKEY_CURRENT_CONFIG
根键展开后可以看到子健:像 "SOFTWARE, Microsoft, Windows, CurrentVersion 等都是子健。
而最后一级便不是子健了,而是项:Run。
“名称栏” 下方的都称为 键值项。
“类型栏” 下方的都称为 键值项的类型。
“数据栏” 下方的都称为 键值项的键值。
RegCreateKeyEx() 介绍:
功能:创建或打开注册表键。
函数原型:LONG RegCreateKeyEx(
HKEY hKey, // 键的句柄 (RegCreateKey, RegCreateKey() 的返回值) 或者 预定义的值( 即五个根键)。
LPCTSTR lpSubKey, // 指向 要创建或要打开的子健名称。
DWORD Reserved, // 保留值必须为 0,
LPTSTR lpClass, // 指向一个字符串,该字符串定义了该键的类型。可以为空。
DWORD dwOptions, // 新创建的键的属性。
REGSAM samDesired, // 键的访问权限。
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向 SECURITY_ATTRIBUTES 结构的指针。
// 定义返回的句柄是否可以被子进程继承,为 NULL 表示不继承。
PHKEY phkResult, // 指向新创建或打开的键的句柄的指针,保存返回的句柄。
LPDWORD lpdwDisposition // 指明键是被创建还是被打开的
);
参数:dwOptions
REG_OPTION_NON_VOLATILE 新创建的键为一个非短暂性的键 (数据信息保存在文件中,当系统重新启动时,数据信息恢复)
REG_OPTION_VOLATILE 新创建的键为一个短暂性的键(数据信息保存在内存中)。
REG_OPTION_BACKUP_RESTORE 仅在WINNT中支持,可以提供优先级支持。
参数:samDesired
KEY_CREATE_LINK 准许生成符号键
KEY_CREATE_SUB_KEY 准许生成子键
KEY_ENUMERATE_SUB_KEYS 准许生成枚举子键
KEY_EXECUTE 准许进行读操作
KEY_NOTIFY 准许更换通告
KEY_QUERY_VALUE 准许查询子键
KEY_ALL_ACCESS 提供完全访问,是上面数值的组合
KEY_READ 是下面数值的组合:
KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY
KEY_SET_VALUE 准许设置子键的数值
KEY_WRITE 是下面数值的组合:
KEY_SET_VALUE、KEY_CREATE_SUB_KEY
参数:lpdwDisposition
REG_CREATE_NEW_KEY 键先前不存在,现在被创建。
REG_OPENED_EXISTING_KEY 键先前已存在,现在被打开。
返回值:如果函数调用成功,则返回 ERROR_SUCCESS。否则返回非零的错误代码。
RegOpenKeyEx() 介绍:
功能:打开一个已经存在的子健。
函数原型:LSTATUS RegOpenKeyEx(
HKEY hKey,
LPCSTR lpSubKey,
DWORD ulOptions, // 保留值必须为 0。
REGSAM samDesired,
PHKEY phkResult
);
参数:同 RegCreateKeyEx()。
返回值:如果函数调用成功,则返回 ERROR_SUCCESS。否则返回非零的错误代码。
RegCloseKey() 介绍:
功能:关闭注册表。
函数原型:LONG RegCloseKey(
HKEY hKey // 释放键的句柄。 ); 返回值:如果函数调用成功,则返回 ERROR_SUCCESS。否则返回非零的错误代码。 RegDeleteKey() 介绍:#include<stdio.h> #include<Windows.h> int main(void) { LONG Long, Long0; HKEY hKey = NULL; char Buffer[] = "www.baidu.com"; Long = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer\\Main", 0, KEY_ALL_ACCESS, &hKey); if (Long != ERROR_SUCCESS) { printf("Open Error!\n"); system("pause"); exit(0); } Long0 = RegSetValueEx(hKey, "Start Page", 0, REG_SZ, (CONST BYTE *)Buffer, strlen(Buffer)); if (Long0 != ERROR_SUCCESS) { printf("Set Value Error!\n"); system("pause"); exit(0); } printf("Modify Succeed!\n"); system("pause"); return 0; }