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

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

程序

创建注册表项

  • 使用 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”变成“这是一个测试值”。

    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 应用程序中实现的身份验证和伪装。

将数据写入用户文件夹()而不是本地计算机(CurrentUserLocalMachine)更安全。

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

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

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

.NET Framework 安全性

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

注释

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

另请参阅