日期:2009-06-27  浏览次数:20373 次

使用 Visual Basic .NET 访问注册表

摘要:本文介绍如何使用 Visual Basic® .NET 的内置函数 DeleteSetting、GetAllSettings、GetSetting 和 SaveSetting,以及公共语言运行时的 Registry 和 RegistryKey 类来访问注册表。其中详细说明了所需的权限、何时使用注册表编辑器,以及如何通过编程读取和写入注册表。本文包含一些指向英文站点的链接。

目录
简介
前提条件
使用 Visual Basic .NET 函数访问注册表
使用 .NET 框架访问注册表
权限
使用注册表编辑器访问注册表
总结

简介
在 Visual Basic .NET 中编程时,可以选择通过 Visual Basic .NET 提供的函数或者 .NET 框架的注册表类来访问注册表。虽然多数情况下使用 Visual Basic 函数已经足够,但有时仍需要使用 .NET 框架。

注册表储存了有关操作系统的信息以及计算机上安装的应用程序的信息。使用注册表可能会影响安全性。因此,必须仔细检查访问注册表的代码以确保不会给将运行该代码的计算机带来安全影响。

注册表项包括两部分:值名称和值。项目存储在项和子项系统中,如同文件系统中文件存储在目录和子目录中一样。

前提条件
要掌握本文内容,必须具备以下前提条件:

熟悉以前版本的 Visual Basic。
掌握有关注册表的设计和用途的知识。
理解访问注册表的安全问题。
使用 Visual Basic .NET 函数访问注册表
Visual Basic .NET 提供了四个函数以访问注册表。要使用这些函数,必须具有 RegistryPermissionAccess 枚举的 Read 和 Write 权限。以完全信任身份运行的任何代码(根据默认的安全原则,这是指安装在用户本地硬盘驱动器上的任何代码)都具有访问注册表的权限。有关详细信息,请参阅 RegistryPermission Class。

Visual Basic .NET 函数 说明
DeleteSetting 从注册表中应用程序的项目中删除一段或一个项设置。
GetSetting 从注册表中应用程序的项目中返回一个项设置值。
GetAllSettings 从注册表中应用程序的项目中返回项设置及其值的列表。
SaveSetting 在注册表中创建或保存一个应用程序项目。

注意:不能通过 GetSetting 函数返回段的名称。
如果不能保存项设置,将产生一个 ArgumentException 对象。有关此异常的详细信息,请参阅 ArgumentException。

下面的示例创建了一个注册表项和两个子项。接着显示第一个项的值,并显示第一个项及其子项的值。然后删除第二个子项,并显示第一个项及其子项的值,以确认删除了第二个子项。

' 创建第一个项。
SaveSetting("TestApp","Startup","FirstKey","First")
' 创建第一个子项。
SaveSetting("TestApp","FirstKey","FirstSubKey","FirstSub")
' 创建第二个子项。
SaveSetting("TestApp","FirstKey","SecondSubKey","SecondSub")
Try
   ' 写出第一个项的值。
   Console.WriteLine ((GetSetting("TestApp","Startup","FirstKey"))
   ' 写出第一个项及其两个子项。
   Console.WriteLine (GetAllSettings("TestApp","Startup"))
   Catch e As ArgumentException
   Catch e As Exception
   Console.WriteLine (e.GetType.ToString)
   Finally
End Try
DeleteSetting("TestApp","FirstKey","SecondSubKey")
Try
   Console.WriteLine (GetSetting("TestApp","Startup","FirstKey"))
   Console.WriteLine (GetAllSettings("TestApp","Startup"))
   Catch e As ArgumentException
   Catch e As Exception
   Console.WriteLine (e.GetType.ToString)
   Finally
End Try
使用内置注册表访问函数具有以下限制:只能访问位于 HKEY_CURRENT_USER\Software\VB and VBA Program Settings 下的注册表项。为此,必须登录到系统,因为 HKEY_CURRENT_USER 注册表项仅在登录到系统时才被激活。

从一个非交互进程(如 mtx.exe)访问的注册表设置应存储在 HKEY_LOCAL_MACHINE\Software\ 或 HKEY_USER\DEFAULT\Software 注册表项下。