如何:在 Visual Basic 中创建注册表项并设置其值
My.Computer.Registry
对象的 CreateSubKey
方法可用于创建注册表项。
过程
创建注册表项
使用
CreateSubKey
方法,指定放置注册表项的配置单元以及注册表项的名称。 参数Subkey
不区分大小写。 此示例在 HKEY_CURRENT_USER 下创建注册表项MyTestKey
。My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
创建注册表项并设置其值
使用
CreateSubkey
方法,指定放置注册表项的配置单元以及注册表项的名称。 此示例在 HKEY_CURRENT_USER 下创建注册表项MyTestKey
。My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
使用
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(访问控制列表)保护,在注册表中以纯文本形式存储机密信息(例如密码)也不安全。
以下情况可能会导致异常:
密钥名称是
Nothing
(ArgumentNullException)。用户没有创建注册表项的权限 (SecurityException)。
项名称超过 255 个字符的限制 (ArgumentException)。
项已关闭 (IOException)。
注册表项为只读 (UnauthorizedAccessException)。
.NET Framework 安全性
若要运行此进程,程序集需要 RegistryPermission 类授予的特权等级。 如果在部分信任上下文中运行,该进程可能会因特权不足而引发异常。 同样,用户必须具有用于创建或写入设置的正确 ACL。 例如,具有代码访问安全性权限的本地应用程序可能没有操作系统权限。 有关详细信息,请参阅 Code Access Security Basics。
注意
代码访问安全性 (CAS) 已在所有版本的 .NET Framework 和 .NET 中弃用。 如果使用与 CAS 相关的 API,最新版本的 .NET 不会遵循 CAS 注释,并会生成错误。 开发人员应寻求用于完成安全任务的替代方法。