安全性与注册表 (Visual Basic)

本页讨论将数据存储在注册表中的安全意义。

权限

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

对注册表进行操作时,如果允许对系统资源或受保护的信息进行不适当的访问,则可能会降低安全性。 若要使用这些属性,必须具有来自 RegistryPermissionAccess 枚举(其控制对注册表变量的访问)的读取和写入权限。 通过完全信任运行的任何代码(在默认安全策略下,指安装在用户本地硬盘上的任何代码)都具有访问注册表的必要权限。 有关详细信息,请参阅 RegistryPermission 类。

不应将注册表变量存储在某些内存位置,在这些位置,不具有 RegistryPermission 的代码可访问这些变量。 同样,授予权限时,授予顺利完成操作所需的最小特权。

通过 RegistryPermissionAccess 枚举定义注册表权限访问值。 下表详细说明了其成员。

Value 对注册表变量的访问
AllAccess 创建、读取和写入
Create 创建
NoAccess 无访问权限
Read 读取
Write 写入

检查注册表项中的值

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

重要

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

另请参阅