「Win」Windows注册表介绍与操作

news/2024/11/22 22:30:06/

在这里插入图片描述

✨博客主页:何曾参静谧的博客
📌文章专栏:「Win」Windows程序设计


相关术语

Windows的注册表:是一个重要的系统组件,用于存储操作系统和应用程序的配置信息。它类似于一个数据库,包含了各种键值对、参数、设置等,可以通过注册表来管理和修改系统和应用程序的行为。在本文中,我们将详细介绍Windows的注册表,包括其结构、功能和使用方法。

一、 注册表的结构

Windows的注册表由多个键(Key)和值(Value)组成,可以看作一个树形结构。

内容描述
HKEY_CLASSES_ROOT表示所有文件类型的类信息
HKEY_CURRENT_USER表示当前用户的设置信息
HKEY_LOCAL_MACHINE表示计算机的硬件和软件信息
HKEY_USERS表示所有用户的设置信息
HKEY_CURRENT_CONFIG表示当前计算机的设置信息

在这里插入图片描述

二、注册表的功能

Windows的注册表具有以下功能:

  • 存储系统和应用程序的配置信息:Windows和应用程序可以将自己的配置信息保存到注册表中,以便在下次启动时快速读取和应用这些设置。
  • 管理系统和应用程序的行为:通过修改注册表中的键值对,可以改变系统和应用程序的行为,例如修改桌面背景、禁用某些功能、设置默认打开方式等。
  • 维护系统的安全性:Windows可以使用注册表来存储用户的安全设置,例如密码策略、用户权限等。
  • 支持应用程序的扩展:应用程序可以使用注册表来存储自己的设置和配置信息,以便进行扩展和定制。

三、注册表的使用方法

Windows提供了多种方式来访问和修改注册表,包括:

  • 使用Regedit.exe:Regedit.exe是Windows自带的注册表编辑器,可以用来查看和修改注册表中的键值对。打开Regedit.exe后,可以选择需要查看或修改的节点,然后双击该节点下的键值对进行编辑。Win+R输入:regedit
  • 使用Reg.exe:Reg.exe是Windows命令行工具,可以用来在命令行中访问和修改注册表。例如,可以使用“reg query”命令来查询注册表中的键值对,“reg add”命令来添加新的键值对,“reg delete”命令来删除键值对等。
  • 使用API:Windows还提供了一组API,可以在程序中访问和修改注册表。例如,可以使用RegOpenKeyEx函数打开一个注册表的键,使用RegQueryValueEx函数查询一个键值对的值,使用RegSetValueEx函数设置一个键值对的值等。

四、API调用

函数名称功能描述
RegOpenKeyEx打开指定的注册表键
RegCreateKeyEx创建一个新的注册表键
RegQueryValueEx查询指定键的值
RegSetValueEx设置指定键的值
RegDeleteValue删除指定键的值
RegDeleteKey删除指定的注册表键
RegEnumKeyEx枚举指定键的子键

在示例代码中,我们首先使用RegOpenKeyEx函数打开了HKEY_CURRENT_USER\Control Panel\Desktop节点,然后使用RegQueryValueEx函数查询了WallpaperStyle键的值,并将其输出到控制台上。接着使用RegCreateKeyEx函数创建了一个新的注册表键Software\MyApp,并指定了KEY_WRITE标志,表示要修改该节点下的键值对。然后使用RegSetValueEx函数设置了MyValue键的值为2。最后使用RegDeleteValue函数删除了MyValue键值对,并使用RegCloseKey函数关闭了注册表键。

#include <Windows.h>
#include <iostream>int main()
{HKEY hKey;DWORD dwType, dwSize, dwValue;LONG lRet;// 打开注册表键lRet = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_READ, &hKey);if (lRet != ERROR_SUCCESS){std::cerr << "Error opening key" << std::endl;return 1;}// 查询键值的值dwSize = sizeof(DWORD);lRet = RegQueryValueEx(hKey, TEXT("WallpaperStyle"), NULL, &dwType, (LPBYTE)&dwValue, &dwSize);if (lRet != ERROR_SUCCESS){std::cerr << "Error querying value" << std::endl;RegCloseKey(hKey);return 1;}// 输出键值的值std::cout << "WallpaperStyle = " << dwValue << std::endl;// 关闭注册表键RegCloseKey(hKey);// 创建新的注册表键lRet = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\MyApp"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);if (lRet != ERROR_SUCCESS){std::cerr << "Error creating key" << std::endl;return 1;}// 设置键值的值dwValue = 2;lRet = RegSetValueEx(hKey, TEXT("MyValue"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));if (lRet != ERROR_SUCCESS){std::cerr << "Error setting value" << std::endl;RegCloseKey(hKey);return 1;}// 删除键值对lRet = RegDeleteValue(hKey, TEXT("MyValue"));if (lRet != ERROR_SUCCESS){std::cerr << "Error deleting value" << std::endl;RegCloseKey(hKey);return 1;}// 关闭注册表键RegCloseKey(hKey);return 0;
}

在示例代码中,我们首先使用RegOpenKeyEx函数打开了HKEY_LOCAL_MACHINE\SOFTWARE节点,然后使用RegEnumKeyEx函数枚举了该节点下的所有子键,并将其输出到控制台上。最后使用RegCloseKey函数关闭了注册表键。

#include <Windows.h>
#include <iostream>int main()
{HKEY hKey;DWORD dwIndex = 0, dwNameSize = MAX_PATH;TCHAR szKeyName[MAX_PATH];LONG lRet;// 打开注册表键lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE"), 0, KEY_READ, &hKey);if (lRet != ERROR_SUCCESS){std::cerr << "Error opening key" << std::endl;return 1;}// 枚举子键while ((lRet = RegEnumKeyEx(hKey, dwIndex++, szKeyName, &dwNameSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS){// 输出子键名称std::wcout << szKeyName << std::endl;// 重置缓冲区大小dwNameSize = MAX_PATH;}// 关闭注册表键RegCloseKey(hKey);return 0;
}

五、注意事项

总之,Windows的注册表是一个重要的系统组件,用于存储系统和应用程序的配置信息。通过访问和修改注册表,可以改变系统和应用程序的行为,实现个性化定制和扩展。不过,在使用注册表时需要小心,避免误操作和损坏系统。如果不确定如何操作,建议先备份注册表,以免数据丢失。


在这里插入图片描述


http://www.ppmy.cn/news/211578.html

相关文章

3310 4g java_疾速上网!诺基亚3310现推出4G LTE版

在此前&#xff0c;诺基亚曾推出了复刻版的 3310&#xff0c;分别有 2G 和 3G 网络版本&#xff0c;而在日前&#xff0c;诺基亚正式推出了 3310 的 4G LTE 版&#xff0c;并且官网介绍页面已上线。 在外观方面&#xff0c;4G LTE 版的 3310 跟此前版本并没有任何差别&#xff…

2012年9月ITbrand电信业4G技术品牌排行榜

【文章摘要】ITbrand第21次发布电信业4G技术品牌排行榜。ITbrand针对全球IT品牌采用专属的品牌价值评估方法计算品牌影响力&#xff0c;并据此定期发布“最佳IT品牌排行榜”。 北京&#xff0c;2012年9月25日——ITbrand第21次发布电信业4G技术品牌排行榜。ITbrand针对全球IT品…

号外:2012年三星手机在中国销量翻3倍,位列中国智能手机排行首位,诺基亚跌至第7位

众所周知&#xff1a;android系统已经占据了中国智能手机市场&#xff08;2012年第四季度数据显示:android手机已经占到中国智能手机86%的市场份额&#xff09;。而三星借助google的手机操作系统引领着智能手机的销售榜。报道称&#xff1a;三星手机趁着android智能机的春风&am…

互联网晚报 | 10月7日 星期四 | 小米中东欧5G手机市占率排名第一;威马汽车将再获5亿美元融资;诺基亚首款平板T20发布...

今日看点 ✦ 威马汽车将再获5亿美元融资&#xff0c;过去一年最大美元融资额造车新势力 ✦ 《长津湖》票房破30亿&#xff0c;成中国影史首部连续6天单日票房破四亿电影 ✦ 小米公司在中东欧市场5G手机市占率42%居首&#xff0c;苹果三星紧随其后 ✦ 抖音上线私域流量小程序“抖…

冈萨雷斯DIP第10章知识点

文章目录 10.2 点、线和边缘检测10.2.2 孤立点的检测10.2.3 线检测10.2.4 边缘模型 10.3 阈值处理10.3.4 使用图像平滑改进全局阈值处理10.3.5 使用边缘改进全局阈值处理10.4 使用区域生长、区域分离与聚合进行分割 分割依据的灰度值基本性质是&#xff1a;不连续性和相似性。本…

华硕服务器主板显示09,求助高手!09年华硕主板,无法点亮。

满意答案 我还不是很懂这个玩意要是懂也不来这里瞎参合了&#xff01;&#xff01;&#xff01;加我朋友的号码&#xff01;&#xff01;&#xff01;他高手现在开2个网吧一个电脑维修店&#xff01;&#xff01; 问问他液晶维修我睡觉去了夜班&#xff01;&#xff01;老婆管的…

华硕好屏120Hz高刷新率,开启OLED市场全新格局

众所周知&#xff0c;华硕于2021年推出实力爆款无畏Pro 14锐龙版&#xff0c;作为无畏系列超能打的开山之作&#xff0c;它是首款5千价位搭载2.8K OLED屏幕AMD锐龙7 5800H处理器的笔电产品&#xff0c;这样一位“超能打选手”在上市之初就备受市场与消费者的青睐与好评。2022年…

arduino动态刷新显示_2019 台北电脑展:华硕显示器产品精锐尽出

显示器是华硕深耕的产品门类之一&#xff0c;2018 年华硕电竞显示器便占据了全球出货量第一的位置。在今年的台北电脑展上&#xff0c;华硕也带来了多款显示器新品&#xff0c;包括电竞显示器、专业显示器、便携显示器等品类。 首先是主打电竞的 ROG&#xff0c;此次展出了 SWI…