如何:在 Visual Basic 中从注册表项中读取值

GetValue对象的方法My.Computer.Registry可用于读取 Windows 注册表中的值。

如果以下示例中的键“Software\MyApp”不存在,则会引发异常。 ValueName如果以下示例中的“Name”不存在,Nothing则返回。

GetValue该方法还可用于确定特定注册表项中是否存在给定值。

当代码从 Web 应用程序读取注册表时,当前用户由在 Web 应用程序中实现的身份验证和模拟确定。

从注册表项读取值

  • 使用GetValue方法,并指定路径和名称以从注册表项读取值。 以下示例从消息框中读取NameHKEY_CURRENT_USER\Software\MyApp值并将其显示在消息框中。

    Dim readValue = My.Computer.Registry.GetValue(
        "HKEY_CURRENT_USER\Software\MyApp", "Name", Nothing)
    MsgBox("The value is " & readValue)
    

此代码示例也可作为 IntelliSense 代码片段。 在代码片段选取器中,它位于 Windows作系统 > 注册表中。 有关详细信息,请参阅 代码片段

确定值是否存在于注册表项中

  • 使用GetValue方法来检索值。 下面的代码检查值是否存在,如果不存在,则返回一条消息。

    If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\TestApp",
    "TestValue", Nothing) Is Nothing Then
        MsgBox("Value does not exist.")
    End If
    

可靠的编程

注册表保存用于存储数据的顶级键或根键。 例如,HKEY_LOCAL_MACHINE根密钥用于存储所有用户使用的计算机级设置,而HKEY_CURRENT_USER用于存储特定于单个用户的数据。

以下条件可能会导致异常:

.NET Framework 安全性

若要运行此过程,程序集需要拥有由 RegistryPermission 类提供的特权级别。 如果在部分信任上下文中运行,进程可能会由于权限不足而引发异常。 同样,用户必须具有正确的 ACL 才能创建或写入设置。 例如,具有代码访问安全权限的本地应用程序可能没有操作系统权限。 有关详细信息,请参阅 代码访问安全基础知识

注释

代码访问安全性(CAS)已在 .NET Framework 和 .NET 的所有版本中弃用。 使用与 CAS 相关的 API 时,最新版本的 .NET 不遵循 CAS 注释并生成错误。 开发人员应寻求完成安全任务的替代方法。

另请参阅