如何:在注册表中创建注册表项 (Visual C#)
本示例将值对“Name”和“Isabella”添加到当前用户的注册表中的注册表项“Names”之下。
示例
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();
编译代码
复制该代码,并将其粘贴到某控制台应用程序的 Main 方法中。
将 Names 参数替换为直接存在于注册表 HKEY_CURRENT_USER 节点下的项的名称。
将 Name 参数替换为直接存在于“Names”节点下的值的名称。
可靠编程
检查注册表结构以查找适合您的项的位置。 例如,您可能需要打开当前用户的 Software 项,并且用您的公司的名称创建一项。 然后将注册表值添加到您的公司的项上。
以下情况可能会导致异常:
注册表项的名称为空。
用户没有创建注册表项的权限。
注册表项名称超过 255 个字符的限制。
注册表项已关闭。
注册表项是只读的。
安全性
与将数据写入本地计算机 (Microsoft.Win32.Registry.LocalMachine) 相比,将数据写入用户文件夹 (Microsoft.Win32.Registry.CurrentUser) 更安全。
在您创建注册表值时,需要确定如果该值已存在则应执行的操作。 另一进程(可能是恶意进程)可能已创建了该值,并拥有对该值的访问权。 将数据放入注册表值后,其他进程就可以使用这些数据了。 若要防止出现这种情况,请使用 Overload:Microsoft.Win32.RegistryKey.GetValue 方法。 如果注册表项不存在,该方法将返回 null。
即使注册表项受访问控制列表 (ACL) 的保护,在注册表中以纯文本形式存储机密信息(例如密码)也不安全。