🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 如何:在注册表中创建注册表项 (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 节点下的项的名称。 * 将 _Nam_e 参数替换为直接存在于“Names”节点下的值的名称。 ## 可靠编程 检查注册表结构以查找适合您的项的位置。例如,您可能需要打开当前用户的 Software 项,并且用您的公司的名称创建一项。然后将注册表值添加到您的公司的项上。 以下情况可能会导致异常: * 注册表项的名称为空。 * 用户没有创建注册表项的权限。 * 注册表项名称超过 255 个字符的限制。 * 注册表项已关闭。 * 注册表项是只读的。 ## .NET Framework 安全性 与将数据写入本地计算机 (Microsoft.Win32.Registry.LocalMachine) 相比,将数据写入用户文件夹 (Microsoft.Win32.Registry.CurrentUser) 更安全。 在您创建注册表值时,需要确定如果该值已存在则应执行的操作。另一进程(可能是恶意进程)可能已创建了该值,并拥有对该值的访问权。将数据放入注册表值后,其他进程就可以使用这些数据了。若要防止出现这种情况,请使用 **Overload:Microsoft.Win32.RegistryKey.GetValue** 方法。如果注册表项不存在,该方法将返回 null。 即使注册表项受访问控制列表 (ACL) 的保护,在注册表中以纯文本形式存储机密信息(例如密码)也不安全。 ## 请参阅 [System.IO](https://msdn.microsoft.com/zh-cn/library/system.io.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [文件系统和注册表(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/2kzb96fk.aspx) [Read, write and delete from the registry with C#](http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C)