安全性与注册表

更新:2007 年 11 月

本页讨论在注册表中存储数据的安全问题。

权限

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

对注册表进行操作时,如果允许对系统资源或受保护的信息进行不适当的访问,则可能会降低安全性。要使用这些属性,您必须拥有控制注册表变量访问权限的 RegistryPermissionAccess 枚举的读写权限。任何以完全信任方式运行的代码(在默认安全策略下,指任何安装在用户的本地硬盘上的代码)都具有访问注册表的必要权限。有关更多信息,请参见 T:System.Security.Permissions.RegistryPermission

注册表变量不应存储在没有 RegistryPermission 的代码也能访问的内存位置。同样,在授予权限时,应授予完成任务所需的最小权限。

注册表权限访问值由 RegistryPermissionAccess 枚举定义。下表详细描述了它的成员。

访问注册表变量

AllAccess

创建、读取和写入

Create

创建

NoAccess

没有访问权

Read

读取

Write

写入

检查注册表项中的值

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

安全说明:

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

请参见

任务

演练:创建注册表项并更改其值

疑难解答:操作注册表

概念

常见的注册表任务

使用 My 读取和写入注册表

参考

My.Computer.Registry 对象

My.Computer.Registry 对象成员