如何:在 Visual Basic 中创建注册表项并设置其值

My.Computer.Registry 对象的 CreateSubKey 方法可用于创建注册表项。

过程

创建注册表项

  • 使用 CreateSubKey 方法,指定放置注册表项的配置单元以及注册表项的名称。 参数 Subkey 不区分大小写。 此示例在 HKEY_CURRENT_USER 下创建注册表项 MyTestKey

    My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
    

创建注册表项并设置其值

  1. 使用 CreateSubkey 方法,指定放置注册表项的配置单元以及注册表项的名称。 此示例在 HKEY_CURRENT_USER 下创建注册表项 MyTestKey

    My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
    
  2. 使用 SetValue 方法设置值。 此示例设置字符串值。 “MyTestKeyValue”设置为“This is a test value”。

    My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey",
      "MyTestKeyValue", "This is a test value.")
    

示例

此示例在 HKEY_CURRENT_USER 下创建注册表项 MyTestKey,然后将字符串值 MyTestKeyValue 设置为 This is a test value

My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
' Change MyTestKeyValue to This is a test value.
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey",
  "MyTestKeyValue", "This is a test value.")

可靠编程

检查注册表结构,查找适合项的位置。 例如,可能需要打开当前用户的 HKEY_CURRENT_USER\Software 项,并用公司的名称创建一项。 然后将注册表值添加到公司的项上。

从 Web 应用程序读取注册表时,当前用户依赖于在 Web 应用程序中实现的身份验证和模拟。

将数据写入用户文件夹 (CurrentUser) 比写入本地计算机 (LocalMachine) 更安全。

创建注册表值时,需要确定该值已存在时应执行的操作。 另一进程(可能是恶意进程)可能已创建了该值,并拥有对该值的访问权。 将数据放入注册表值后,其他进程即可使用这些数据。 若要防止出现这种情况,请使用 GetValue 方法。 如果项不存在,则该方法返回 Nothing

即使注册表项受 ACL(访问控制列表)保护,在注册表中以纯文本形式存储机密信息(例如密码)也不安全。

以下情况可能会导致异常:

.NET Framework 安全性

若要运行此进程,程序集需要 RegistryPermission 类授予的特权等级。 如果在部分信任上下文中运行,该进程可能会因特权不足而引发异常。 同样,用户必须具有用于创建或写入设置的正确 ACL。 例如,具有代码访问安全性权限的本地应用程序可能没有操作系统权限。 有关详细信息,请参阅 Code Access Security Basics

注意

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

另请参阅