008 Windows注册表

2023-12-17

一、注册表基础

1、概述

注册表(Registry,繁体中文版 Windows 操作系统称之为登录档案)是 Microsoft Windows 中的一个重要的数据库,用于 存储系统应用程序 的设置信息。早在 Windows 3.0 推出 OLE 技术的时候,注册表就已经出现。随后推出的 Windows NT 是第一个从系统级别广泛使用注册表的操作系统。但是,从 Microsoft Windows 95 操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用。

2、一台电脑整体架构:

最底层的是 硬件 ,在硬件上面安装 操作系统 ,在操作系统上安装 应用程序

注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”,也可以说是一个非常巨大的树状分层结构的数据库系统。

早期注册表是.ini文件,在Windows95之后才有了注册表编辑器

3、注册表结构:

1)子树

注册表以树状结构进行呈现,注册表有五颗子树(实际只有两颗子树,为了方便操作分成了五颗子树)

  • HKEY_LOCAL_MACHINE:记录本地计算机系统的信息,包括硬件和操作系统数据
  • HKEY_USERS:记录用户的信息,记录关于动态加载用户配置文件和默认配置文件的信息
  • HKEY_CURRENT_USER:HKEY_USERS的子树,主要保存当前登录用户的信息,它指向HKEY_USERS\当前用户的安全ID,包含当前以交互方式登录的用户的用户配置文件
  • HKEY_CURRENT_CONFIG:KEY_LOCAL_MACHINE的子树,指向HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current包含在启动时由本地计算机系统使用的硬件配置文件的相关信息加载的设备驱动程序、显示时要使用的分辨率
  • HKEY_CLASSES_ROOT:HKEY_CURRENT_USER的子树包含用于各种OLE技术和文件类关联数据的信息。

2)项

  • 可以简单理解为文件夹,项中可以包含项和值

3)值

  • 每个注册表的项或子项都可以包含称为值的数据
  • 部分值应用于某个用户的信息
  • 部分值应用于计算机所有用户的信息
  • 值由三部分组成(值的名称、值类型、值的数据)

二、注册表操作

1、创建项

2、创建值(六种类型)

  • 字符串值:固定长度的文本字符串
  • 二进制值:原始二进制数据。多数硬件组件信息都以二进制数据存储
  • DWORD值:数据由4字节长的数表示,设备驱动程序和服务的很多参数都是这种类型
  • QWORD值:数据由8字节长的数表示
  • 多字符串值:多重字符串,包含列表或多值的值通常为该类型
  • 可扩充字符串值:长度可变的数据串,该数据类型包含在程序或服务使用改数据时解析的变量

3)修改值

三、案例

1、简单有趣的几个注册表案例

1) 个性化时间设置

  • HKEY_CURRENT_USER\Control Panel\International下的sTimeFormat进行修改

2)欢迎屏幕显示自定义信息

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System下的值legalnoticecaption(标题)和legalnoticetext(文本)

3)禁用任务管理器

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System下新建DWORD值DisableTaskMgr,设置值为1

4)禁用控制面板

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Exporter下新建DWORD值NoControlPanel,设置值为1

5)去掉快捷方式左下角小箭头

  • 计算机\HKEY_CLASSES_ROOT\lnkfile下的IsShortcut删掉

2、注册表的编辑技巧

  • 查找字符串、值或项
  • 将子项添加到收藏夹
  • 打印注册表
  • 复制项名字
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

008 Windows注册表 的相关文章

  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • 不在焦点时响应键盘? (C#、Vista)

    我正在尝试编写一个应用程序 只要按下 Shift 键 无论当前哪个应用程序具有焦点 它都会做出响应 我尝试过这个SetWindowsHookEx 与GetKeyboardState 但这两种方法仅在应用程序窗口具有焦点时才有效 我需要它在全
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • 在哪里可以找到 Windows 7 UX 指南中推荐的图标/动画?

    Windows 7 UX 指南有很好的插图和图标示例 但我在 SDK 中确实找不到它们 他们藏在某个地方 还是找不到 如果您谈论的是常见的 UI 图标 那么您应该以编程方式获取它们 例如 您可以使用 var errIcon HICON be
  • 通过插件管理器在 Notepad++ 中配置代理设置

    我想在 Notepad 中配置代理设置 以允许通过代理从互联网下载 在从网上搜索如何执行此操作后 我了解到我需要通过 设置 按钮在插件管理器中执行此操作 当我转到插件 gt 插件管理器 gt 显示插件管理器 gt 设置时 我看到下面的对话框
  • 所见即所得与 Unicode

    我在 Delphi 中编写了一个 Windows 程序 该程序使用 GetCharWidth 和 Em Square 将文本非常精确地放置并换行到屏幕和打印机 这对于 ANSI 文本效果很好 您只需要检索和计算 255 个字符的宽度 但当您
  • 在 Win7 登录屏幕上运行应用程序[重复]

    这个问题在这里已经有答案了 我想通过服务在 Windows 7 的登录屏幕上运行应用程序 我对此进行了长期研究并尝试了不同的方法 但不幸的是到目前为止还没有完全成功 我设法在当前登录用户的锁定屏幕上运行该应用程序 起初我认为这就是我基本上试
  • 为什么我在 Windows 上使用 async 和 wait 时会收到 NotImplementedError 错误?

    我有这个代码 import os import time import asyncio async def run command args Example from http asyncio readthedocs io en lates
  • 获取自动热键中的可用屏幕区域

    我正在尝试编写一些简单的 AutoHotkey 脚本来移动窗口 但在获取正确的屏幕尺寸值时遇到问题 我试图获取屏幕上可用区域的大小 通常是全屏分辨率减去任务栏 也许还有任何其他停靠窗口 如 Vista 中的侧边栏 我发现的获取屏幕宽度的方法
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 供所有 Win32 程序员在 Windows Aero Glass(DWM、GDI、GDI+)上绘图的文档和 API 示例

    我正在寻找良好的资源来学习使用 Win32 GDI API 或任何替代它的内容 以便使用 Win32 API 直接在玻璃窗体上进行绘制和绘制 当我使用 Delphi 时 我将其标记为 Delphi 或 Visual C 您能找到的任何代码示
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • 如何处理来自单独线程的窗口消息?

    我希望启动一个单独的线程来处理窗口消息 通过阻塞 GetMessage 循环 但之后仍然在初始线程中创建窗口 在单独的线程中 一旦启动 我就会调用PeekMessage使用 PM NOREMOVE 确保消息队列存在 有必要吗 然后 Atta
  • npm package.json bin 无法在 Windows 上运行

    我正在尝试通过 package json 启动我的 cli 工具bin财产 我有以下内容 name mycli bin bin mycli 当我在包路径中打开 cmd 并输入 mycli 时 它表示该命令无法识别 我应该运行 npm 命令吗
  • py2exe - 没有系统模块“pywintypes”

    我正在尝试将一个简单的 Python 脚本转换为 Windows 可执行文件 我的 setup py 脚本是 from distutils core import setup import py2exe setup name Simple
  • 用于绘制音符的库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以以某种方式在屏幕上绘制音符的 Windows 库 我将使用它用 C 编写一个应用程序
  • 如何使用命令行压缩指定文件夹

    你们能告诉我如何将指定的文件压缩到同一个 Zip 文件中吗 让我告诉我我的文件夹是如何填充的 任务调度程序有我的数据库的备份 并每天将它们保存到文件中 它每天创建 4 个数据库备份 这意味着每天会多出 4 个文件 因此 我需要将新创建的备份
  • Git 预提交挂钩未在 Windows 上运行

    我刚刚开始研究 Git 挂钩 但我似乎无法让它们运行 我设置了一个本地存储库 因此我的项目文件夹中现在有一个 git 目录 我已将名为 pre commit cmd 的 cmd 文件添加到 C path to my project git

随机推荐