如何处理 Windows 注册表?






3.47/5 (21投票s)
处理注册表以保存和加载应用程序设置以及修改 Windows 功能
引言
在本文中,我们将讨论注册表:它是什么?我们如何使用它?开发者如何在他们的应用程序中使用注册表?我们如何使用注册表来组织我们的 Windows 用户界面?
什么是注册表?
它是 Microsoft Windows 9X、Windows CE、Windows NT 和 Windows 2000 中使用的中央分层数据库,用于存储配置系统以满足一个或多个用户、应用程序和硬件设备的信息。
注册表包含 Windows 在运行期间不断引用的信息,例如每个用户的配置文件、计算机上安装的应用程序以及每种应用程序可以创建的文档类型、文件夹和应用程序图标的属性表设置、系统中存在的硬件以及正在使用的端口。
我们如何修改注册表?
您可以使用注册表编辑器 (regedit.exe) 修改注册表。打开“开始菜单”,然后选择“运行…”,输入“regedit”,然后将在屏幕上看到注册表编辑器窗口。但是,如果您错误地使用注册表编辑器,可能会导致严重问题,甚至需要重新安装操作系统。
打开注册表编辑器后会看到什么?
您将在编辑器的左侧看到一个树状视图,其中包含 5 个主要节点,如下所示
- HKEY_CURRENT_USER(我们将使用它)
此节点包含当前登录用户的配置信息的根。用户文件夹、屏幕颜色和控制面板设置存储在此处。此信息与用户的配置文件相关联。此键有时缩写为“HKCU”。
- HKEY_USERS
它包含计算机上所有已加载的用户配置文件。HKEY_CURRENT_USER 是 HKEY_USERS 的一个子键。HKEY_USERS 有时缩写为“HKU”。
- HKEY_LOCAL_MACHINE
它包含特定于计算机的配置信息(适用于任何用户)。此键有时缩写为“HKLM”。
- HKEY_CLASSES_ROOT
是 HKEY_LOCAL_MACHINE\software 的一个子键。此处存储的信息可确保在通过 Windows Explorer 打开文件时打开正确的程序。要更改交互式用户的设置,必须在 HKEY_CURRENT_USER\Software\Classes 下进行更改,而不是在 HKEY_CLASSES_ROOT 下。要更改默认设置,必须在 HKEY_LOCAL_MACHINE\Software\Classes 下进行更改。
- HKEY_CURRENT_CONFIG
此节点包含有关本地计算机在系统启动时使用的硬件配置文件的信息。
如何使用注册表保存和加载应用程序设置?
如果您使用 Microsoft Notepad 等应用程序并更改了字体颜色和大小,然后更改了 Notepad 的大小,然后将 Notepad 拖到屏幕左上角并关闭它,下次打开 Notepad 时会看到什么?您会看到 Notepad 具有与上次离开时相同的字体、字体大小、大小和位置。这是如何发生的?这是因为在关闭应用程序时使用注册表保存应用程序的设置,并在再次打开该应用程序时加载这些设置。
要保存应用程序设置,请在保存时按照以下步骤操作
-
您必须包含命名空间
Microsoft.Win32
。 -
创建您自己的注册表项
RegistryKey MyKey = Registry.CurrentUser.CreateSubKey(@"Software\MyApp\");
-
设置您要添加到注册表的值
MyKey.SetValue("Name","Value");
-
对于您想要添加到注册表中的每个值,请重复步骤 3。
-
别忘了关闭您的注册表项
MyKey.Close();
- 检查注册表项是否已创建。打开注册表编辑器,选择当前用户节点,然后选择 Software 子节点,您将找到您的“MyApp”文件夹,其中包含您设置的注册表项。此外,您可以通过右键单击要更改的注册表项并选择“修改”来更改您添加的值。
要加载保存在注册表中的应用程序设置,请按照以下步骤操作
-
别忘了
Using Microsoft.Win32;
-
创建注册表项
RegistryKey MyKey = Registry.CurrentUser.OpenSubKey(@"Software\MyApp\");
-
从注册表中获取您的值
MyKey.GetValue("Name");
-
也别忘了关闭您的注册表项
MyKey.Close();
如何使用注册表控制您的 Windows 设置?
您还可以使用注册表来控制您的 Windows 功能,包括:附件、外观、桌面、文件系统、登录和身份验证、开始菜单和任务栏、启动和关机、系统、疑难解答以及最后的 Windows 资源管理器。
例如,您想从开始菜单中删除注销和搜索。您该如何做?
这非常简单。您只需要知道注册表项的位置路径、注册表项的名称以及您将要替换当前值的值。 “搜索”注册表项位于“CurrentUser\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\”,其注册表项名为“NoFind
”,最后其值为 1
或 0
; 1
表示真(真意味着开始菜单中没有搜索按钮),0
表示假(搜索按钮将存在)。注销按钮位于搜索按钮的相同路径下,其注册表项名称为“StartMenuLogoff
”,其值也为 1
或 0
,1
表示禁用注销按钮,0
表示启用它。
这是一个禁用开始菜单搜索和注销按钮的代码示例
RegistryKey MyKey = Registry.CurrentUser.CreateSubKey
(@"Software\ Microsoft\Windows\CurrentVersion\Policies\Explorer\");
MyKey.SetValue("NoFind",1);
MyKey.SetValue("StartMenuLogoff",1);
然后重新启动(或注销)您的 PC 并查看发生了什么。如果您想恢复它们怎么办?编写相同的代码,但将这两个值从 1
替换为 0
,然后再次重新启动并检查发生了什么。
如果您担心记住注册表项的路径、名称和值,请不必担心,您可以在 这里找到所有这些信息。
我希望本文能帮助那些想知道注册表到底是什么的人,我敦促那些有其他技巧的人发表评论。如果您有进一步的疑问,请随时提出。
历史
- 2007 年 3 月 27 日:初始帖子