📜  Windows 注册表(1)

📅  最后修改于: 2023-12-03 15:21:11.006000             🧑  作者: Mango

Windows注册表

Windows注册表是Windows操作系统中的一个关键部分,它存储了系统和应用程序的各种设置和配置信息。在Windows中,应用程序设置通常存储在注册表中,并包含了应用程序的所有信息,例如安装路径、缺省程序和用户配置等。程序员可以使用注册表来管理和修改这些信息。

注册表结构

注册表的根结点包含了一些重要的信息,如HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER和HKEY_USERS。每个结点都包含了一些子结点,如下所示:

  • HKEY_CLASSES_ROOT:存储文件类型和关联程序信息。
  • HKEY_CURRENT_USER:存储当前用户的配置信息。
  • HKEY_LOCAL_MACHINE:存储计算机系统的配置信息。
  • HKEY_CURRENT_CONFIG:存储计算机硬件和软件的配置信息。
  • HKEY_USERS:存储用户配置文件的信息。

注册表结构如下图所示:

HKEY_CLASSES_ROOT
    .aac
    .avi
    .bmp
    ...
HKEY_CURRENT_USER
    Control Panel
        Accessibility
            ...
    Environment
        ...
HKEY_LOCAL_MACHINE
    Hardware
        ...
    SOFTWARE
        ...
    SYSTEM
        ...
HKEY_CURRENT_CONFIG
    ...
HKEY_USERS
    ...
访问注册表

程序员可以使用Windows API函数访问注册表,包括RegOpenKeyEx、RegCreateKeyEx等。使用这些函数可以打开、读取或写入注册表中的信息。

LONG RegOpenKeyEx(
  _In_ HKEY   hKey,
  _In_ LPCTSTR lpSubKey,
  _In_ DWORD  ulOptions,
  _In_ REGSAM samDesired,
  _Out_ PHKEY phkResult
);

访问注册表的代码片段如下:

import winreg
# 打开注册表项
handle = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, winreg.KEY_ALL_ACCESS)
# 读取注册表项的值
value = winreg.QueryValueEx(handle, "SomeValue")
# 写入注册表项的值
winreg.SetValueEx(handle, "SomeValue", 0, winreg.REG_SZ, "C:\\Program Files\\SomeApplication\\Application.exe")
# 关闭注册表项
winreg.CloseKey(handle)
安全性

由于注册表包含计算机和应用程序的敏感信息,因此需要进行适当的保护。程序员应当注意,不应将敏感信息直接保存在注册表中,或者仅将其保存在访问权限受限制的注册表结点中。

总结

Windows注册表是Windows系统中非常重要的一部分,可以用于存储系统和应用程序的配置信息,程序员可以使用Windows API函数访问注册表,并进行适当的保护以确保安全性。