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用于存储特定于单个用户的数据。
以下条件可能会导致异常:
密钥的名称为
Nothing(ArgumentNullException)。用户没有读取注册表项的权限(SecurityException)。
密钥名称超过 255 个字符的限制(ArgumentException)。
.NET Framework 安全性
若要运行此过程,程序集需要拥有由 RegistryPermission 类提供的特权级别。 如果在部分信任上下文中运行,进程可能会由于权限不足而引发异常。 同样,用户必须具有正确的 ACL 才能创建或写入设置。 例如,具有代码访问安全权限的本地应用程序可能没有操作系统权限。 有关详细信息,请参阅 代码访问安全基础知识。
注释
代码访问安全性(CAS)已在 .NET Framework 和 .NET 的所有版本中弃用。 使用与 CAS 相关的 API 时,最新版本的 .NET 不遵循 CAS 注释并生成错误。 开发人员应寻求完成安全任务的替代方法。