如何:在 Visual Basic 中从注册表项中读取值
My.Computer.Registry
对象的 GetValue
方法可以用于读取 Windows 注册表中的值。
如果在下面的示例中,“Software\MyApp”项不存在,则引发异常。 如果在下面的示例中,ValueName
"Name" 不存在,则返回 Nothing
。
GetValue
方法还可以用于确定特定注册表项中是否存在给定值。
代码从 Web 应用程序读取注册表时,当前用户取决于在 Web 应用程序中实现的身份验证和模拟。
从注册表项读取值
使用
GetValue
方法(指定路径和名称)可从注册表项读取值。 下面的示例从HKEY_CURRENT_USER\Software\MyApp
读取值Name
并将它显示在消息框中。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 用于存储特定于单个用户的数据。
以下情况可能会导致异常:
密钥名称是
Nothing
(ArgumentNullException)。用户没有从注册表项 (SecurityException) 进行读取的权限。
项名称超过 255 个字符的限制 (ArgumentException)。
.NET Framework 安全性
若要运行此进程,程序集需要 RegistryPermission 类授予的特权等级。 如果在部分信任上下文中运行,该进程可能会因特权不足而引发异常。 同样,用户必须具有用于创建或写入设置的正确 ACL。 例如,具有代码访问安全性权限的本地应用程序可能没有操作系统权限。 有关详细信息,请参阅 Code Access Security Basics。
注意
代码访问安全性 (CAS) 已在所有版本的 .NET Framework 和 .NET 中弃用。 如果使用与 CAS 相关的 API,最新版本的 .NET 不会遵循 CAS 注释,并会生成错误。 开发人员应寻求用于完成安全任务的替代方法。