Win32注册表操作

news2024/11/16 21:24:08

注册表的概念

注册表是一个存储计算机配置信息的数据库,用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。

注册表结构

运行Regedit.exe,打开注册表编辑器,可以看到注册表的结构如下:

注册表是一个分层数据库,其中包含对于Windows以及Windows上运行的应用程序和服务的运行至关重要的数据。注册表是树型结构。树中的每个节点都称为键。每个键都可以包含子键和值。

注册表是按照“根键” -> "子键"  -> "键值"层次结构来组织的。

注册表包含五大根键

"HKEY_CLASSES_ROOT" : 包含各种文件类型关联数据的信息

"HKEY_CURRENT_USER": 包含当前登录计算机的用户账户的用户配置文件信息,例如桌面个性化、输入法设置、网络连接以及打印机首选项等

"HKEY_LOCAL_MACHINE":包含一些当前计算机的系统配置信息,例如系统内存、设备程序等

"HKEY_USERS" :包含默认用户的配置文件信息以及动态加载的用户配置文件信息

"HKEY_CURRENT_CONFIG":包含在计算机启动时系统所使用的硬件配置文件信息,用于配置一些计算机相关设置。例如加载设备的驱动程序、计算机使用的分辨率等

打开和关闭注册表

RegOpenKeyEx

打开注册表

LSTATUS RegOpenKeyExA(
  HKEY   hKey,
  LPCSTR lpSubKey,
  DWORD  ulOptions,
  REGSAM samDesired,
  PHKEY  phkResult
);

hKey: 指向一个父键句柄

lpSubKey:指向一个字符串,用来表示要打开的子键名称

ulOptions:系统保留,必须指定为0

samDesired:打印注册表的存取权限,通过使用KEY_ALL_ACCESS表示全部权限

phkResult:接收打开的子键句柄

如果函数执行成功,则返回ERROR_SUCCESS,并且在phkResult中保存返回打开子键的句柄

RegCloseKey

关闭已打开的注册表句柄

1 LSTATUS RegCloseKey(
2   HKEY hKey
3 );

hKey:要关闭的键句柄,即RegOpenKeyExphkResult

创建和删除子键

RegCreateKeyEx

创建一个子键

LSTATUS RegCreateKeyExA(
  HKEY                        hKey,
  LPCSTR                      lpSubKey,
  DWORD                       Reserved,
  LPSTR                       lpClass,
  DWORD                       dwOptions,
  REGSAM                      samDesired,
  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  PHKEY                       phkResult,
  LPDWORD                     lpdwDisposition
);

hKey: 用来指向父键句柄

lpSubKey: 指向一个字符串,用来表示要创建的子键名称

ReServed:系统保留,必须指定为0值

lpClass:子键类名,一般设置为NULL值

dwOptions:创建子键时的选项,通常情况下使用REG_OPTION_NON_VOLATILE宏,表示创建的子键被创建到注册表文件中,而不是内存中

samDesired:打开注册表的存取权限,通常使用KEY_ALL_ACCESS。

lpSecurityAttributes:该参数指向一个SECURITY_ATTRIBUTE结构体,用来指定键句柄的安全属性,一般使用NULL

phkResult:指向用来接收打开的句柄

lpdwDisposition:指向DWORD的指针,该变量接收以下值:

REG_CREATED_NEW_KEY

0x00000001L

键不存在且已创建。

REG_OPENED_EXISTING_KEY

0x00000002L

键存在并且仅需打开即可更改。

如果lpdwDisposition为NULL,则不返回任何处置信息。

如果函数执行成功,则返回ERROR_SUCCESS,并且在phkResult中保存返回创建子键的句柄。当需要创建的子键已经存在,该函数和RegOpenKeyEx起到同样的作用。

RegDeleteKey

删除子键

1 LSTATUS RegDeleteKeyA(
2   HKEY   hKey,
3   LPCSTR lpSubKey
4 );

hKey:用来指向父键句柄

lpSubKey:指向要删除的子键名称字符串

键值的查询、写入与删除

RegQueryValueEx

读取键名称中的数据或查询键名称的属性

1 LSTATUS RegQueryValueExA(
2   HKEY    hKey,
3   LPCSTR  lpValueName,
4   LPDWORD lpReserved,
5   LPDWORD lpType,
6   LPBYTE  lpData,
7   LPDWORD lpcbData
8 );

hKey:用来指向要读取的键值项所处的子键句柄

lpValueName:用来指向要读取的键值项名称的字符串

lpReserved:保留参数,设置为NULL

lpType:接收返回的键值类型,如果不需要返回键值项类型,可以设置为NULL

lpDate:指向一个缓冲区,用来接收返回的键值数据

lpchData:在调用该函数时,这个参数用来指定缓冲区的长度;当函数返回时,该变量保存缓冲区实际接收到的长度

RegSetValueEx

写入键值项

1 LSTATUS RegSetValueExA(
2   HKEY       hKey,
3   LPCSTR     lpValueName,
4   DWORD      Reserved,
5   DWORD      dwType,
6   const BYTE *lpData,
7   DWORD      cbData
8 );

hKey:用来指定要写入的键值项所处的子键句柄

lpValueName:指向定义键值项名称的字符串

Reservered:保存参数,设置为NULL

dwType:指定要写入的键值数据类型

lpData:指定要写入键值数据的缓冲区

cbData:要写入键值数据的缓冲区长度

RegDeleteValue

删除键值项

1 LSTATUS RegDeleteValueA(
2   HKEY   hKey,
3   LPCSTR lpValueName
4 );

hKey:用来指定要删除的键值项所处的子键句柄

lpValueName:被删除键值项的名称

子键和键值的枚举

RegEnumKeyEx

子键枚举函数

 1 LSTATUS RegEnumKeyExA(
 2   HKEY      hKey,
 3   DWORD     dwIndex,
 4   LPSTR     lpName,
 5   LPDWORD   lpcchName,
 6   LPDWORD   lpReserved,
 7   LPSTR     lpClass,
 8   LPDWORD   lpcchClass,
 9   PFILETIME lpftLastWriteTime
10 );

hKey:指向被枚举的键句柄

dwIndex:指定需要返回信息的子键索引编号

lpName:用户接收返回子键名称的缓冲区

lpcchName:在调用函数前,该参数保存lpName指向缓冲区的长度;在调用该函数后,该参数保存缓冲区实际接收到的数据的长度

lpReserved:保留参数,必须为NULL值

lpClass:指向接收枚举子项的用户定义类。一般指定为NULL

lpcchClass:指向lpClass参数指定的缓冲区的大小,一般指定为NULL

lpftLastWriteTime:指向一个FILETIME结构体,用于接收最后一次被写入的时间

RegEnumValue

枚举键值

 1 LSTATUS RegEnumValueA(
 2   HKEY    hKey,
 3   DWORD   dwIndex,
 4   LPSTR   lpValueName,
 5   LPDWORD lpcchValueName,
 6   LPDWORD lpReserved,
 7   LPDWORD lpType,
 8   LPBYTE  lpData,
 9   LPDWORD lpcbData
10 );

hKey:指向被枚举的键句柄

dwIndex:指定需要返回信息的键值索引编号

lpValueName:接收返回值名称的缓冲区

lpcchValueName:有调用该参数前,该参数保存lpValueName指向缓冲区的长度;在该函数调用完成后,该参数保存缓冲区实际接收到的数据的长度

lpReserved:保留参数,必须为NULL

lpType:指向返回键值数据类型

lpData:接收返回键值数据的缓冲区

lpcbData:在调用该函数前,该参数保存lpData指向缓冲区的长度;在该函数调用完成后,该参数保存缓冲区实际收到的数据的长度

常用的注册表设置(设置前建议备份整个注册表)

禁用快捷菜单的”发送到“菜单项

打开计算机\HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo 删除默认值。如果要恢复,将默认值设置为 {7BA4C740-9E81-11CF-99D3-00AA004AE837}

删除快捷方式箭头

打开计算机\HKEY_CLASSES_ROOT\lnkfile,删除IsShortcut键值

隐藏桌面图标

打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建名称为NoSetFolders键值,并设置数据为1

禁止访问任务管理器

打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System,修改DisableTaskmgr键值的数据为1。如果没有DisableTaskmgr键值,就创建一个。

在桌面显示Windows版本

打开计算机\HKEY_CURRENT_USER\Control Panel\Desktop,修改PaintDesktopVersion键值的数据为1

隐藏”重新启用“、”睡眠”和“休眠”命令

打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建一个NoClose键值,并设置数据为1

禁用计算机中的USB端口

打开计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR,修改Start键值数据为4

配置开机启动项

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

推荐阅读:

注册表

Registry - Win32 apps | Microsoft Learn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis 进阶】Redis 典型应用 —— 分布式锁

一、什么是分布式锁 在一个分布式的系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制, 避免出现类似于 “线程安全” 的问题。 而 Java 的 synchronized 或者 C 的 std::mutex,这样的锁都是只能在当前进程…

Embedding技术之Word Embedding

Word Embedding是什么? Word Embedding——词嵌入是将单词映射为数值向量,以捕捉单词间的语义和句法关系,为自然语言处理任务提供有效的特征表示。——自然语言处理——Word2Vec、GloVe、FastText。 Word Embedding属于静态向量&#xff0c…

深度学习入门(四):激活函数与LSTM

激活函数 激活函数在神经网络中扮演着至关重要的角色。它们的主要功能是引入非线性因素,这使得神经网络能够学习和近似任何非线性函数,从而处理复杂的数据模式和决策边界。如果没有激活函数,即使网络拥有很多层,其表达能力仍然只…

青岛国真携手图扑软件共建青岛西海岸区一网统管平台

为深入贯彻关于垃圾分类的重要指示精神,积极响应住房和城乡建设部开展的全国城市生活垃圾分类宣传周活动,5 月 25 - 27 日,以“发挥行业协会新动能 助力垃圾分类新时尚”为主题的“ 2023 垃圾分类高峰论坛”在青岛西海岸成功举办。 青岛国真智…

使用影子凭证进行域权限维持

本文来源无问社区,更对实战内容,渗透思路可前往查看http://wwlib.cn/index.php/artread/artid/15293.html Microsoft 推出了 Windows Hello 企业版 (WHfB),以使用基于密钥的信任模型替换传统的基于密码的身份验证。此…

【Material-UI】按钮组:尺寸与颜色详解

文章目录 一、按钮组概述1. 组件介绍2. 基本用法 二、按钮组的尺寸(Sizes)1. 小尺寸(Small)2. 中等尺寸(Medium)3. 大尺寸(Large) 三、按钮组的颜色(Colors)1…

gitea docker 快捷安装部署

前言 在前一篇博文(什么是 Gitea?)中,我们详细介绍了gitea的功能特性,以及其与其它git服务器之间的特性多维度对比。 在本文中,我们将详细介绍gitea的快捷安装部署,docker方式! 1…

qt客户端与服务端通信

服务器要一处于监听状态 客户端主动连接服务器 服务器的ui界面 客户端的ui界面 很简陋 服务端listen 按钮的槽函数 QHostAddress::Any,port 监听任何端口 void MainWindow::on_listen_clicked() {if(ui->lineEdit->text().isEmpty()){return ;}int port ui->li…

【第九节】python中xml解析和json编解码

目录 一、Python XML 解析 1.1 什么是XML 1.2 Python 对 XML 的解析方法 1.3 SAX解析xml 1.4 xml.dom解析xml 1.6 ElementTree解析XML 二、Python编解码json 2.1 什么是json 2.2 使用json 库 2.3 使用第三方库Demjson 一、Python XML 解析 1.1 什么是XML XML&#x…

Python新手错误集锦(PyCharm)

# 自学Python,用Pycharm作环境。我这个手新到这时我学习的第一个编程软件,且本人专业是化学,以前对电脑最高级的使用是玩扫雷游戏。所以这里集合的错误都是小透明错误,大部分人请绕道。不断更新中...... 缩进错误 记住“indent”…

Jmeter之BeanShell使用(全网最详细的介绍)-第九天

一.什么是BeanShell Java写成的⼩型、免费的Java源代码解释器可以执⾏标准Java语句和表达式,完全符合java语法的java脚本语⾔(需要会javase语⾔)包括⼀些脚本命令,有⾃⼰的⼀些语法和⽅法,是⼀种松散类型的脚本语⾔(这…

静电消除器的产品功能介绍

省维护:超高等级 冲击波可引起空间隔断,从而将外部空气的进入降至最低。与以往的针尖保护构造相比,通过形成绝对的空气屏障,实现了低流量且惊人的省维护性能。 大范围消除静电 配备了 Hi-Power I.C.C. 系统,除了可根据…

普通话水平测试证书真的有用吗?

对于部分考生而言报名普通话水平测试只是随大流,看周围同学都考了,自己也来报名。还有一些呢是看到博主总结哪些证好考有用,先拿下再说但是并不知道具体有什么用。那么,普通话水平测试证书,究竟能为我们带来什么呢&…

MyBatis Generator 代码生成器数据库表新增字段,不覆盖原文件

1.数据库窜库&#xff0c;配置了覆盖插件他会找其他库中同名的表 修改数据库链接 添加 &amp;nullCatalogMeansCurrenttrue <!-- 配置数据源&#xff0c;需要根据自己的项目修改 --><jdbcConnection driverClass"com.mysql.cj.jdbc.Driver"connect…

钡铼技术防水分线盒M12双通道4路DIN智能建筑自动化

钡铼技术的DB系列4路M12双通道预铸线缆分线盒是专为智能建筑自动化和工业自动化设备设计的先进解决方案。其工业级设计和耐酸碱腐蚀材料壳体&#xff0c;使其能够在恶劣环境下稳定运行&#xff0c;并且具备IP67和IP69K防护等级&#xff0c;保证了在高压高温水流清洗条件下的可靠…

python学习自制彩色,自定义格式日志打印制作LLoghelper

python学习自制彩色&#xff0c;自定义格式日志打印LLoghelper python print(xxx) 打印出来只显示白色黑底&#xff0c;没有时间&#xff0c;路径&#xff0c;不同的控制台颜色&#xff0c;对一个没有错误崩溃的python项目来说这样调试起一些逻辑非常不方便 目标&#xff1a; …

下载mmcv或者mmcv-full第三方库失败(已解决)

一、问题描述 首先跑yolov8改进的时候要下载mmcv-full&#xff0c;直接在环境里pip install一直失败&#xff0c;或者下载了之后运行代码说不存在程序啥的&#xff0c;也是没下对的意思。 mmcv或者说mmcv-full第三方库下载的版本是有要求的&#xff0c;要和自己的pytorch版本对…

解决maven java.rmi.ConnectException: Connection refused to host: 127.0.0.1 错误

highlight: gruvbox-dark theme: cyanosis 你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;…

2.2 Python变量与数据类型

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

好用到哭的翻译工具,百度翻译领衔,2024新宠来袭!

在全球化的浪潮中&#xff0c;语言障碍已经越来越不是问题了&#xff0c;翻译工具就像是我们的文化差异跨越助手。今天&#xff0c;我们就来聊聊几款翻译界的佼佼者&#xff0c;它们各有千秋&#xff0c;让我们的多语言之旅变得更加轻松。百度翻译算是其中的佼佼者&#xff0c;…