C# 写入注册表

本文关键字:注册表 | 更新日期: 2023-09-27 18:32:40

我使用以下代码在 Windows 7 上以管理员身份写入具有 C# .NET 4.0 的现有注册表项:

Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE''SOFTWARE''Wow6432Node''MY''SOFTWARE''Name", "key_name", "key_value");

它似乎工作得很好,但我在网上看到其他人声称你需要做一个Registry.Close()否则它不起作用。

如果这似乎已经有效,我真的需要OpenSubKeyClose密钥吗?

我不是在抱怨我的代码有效,我只是想了解最佳实践。

C# 写入注册表

来自 MSDN:http://msdn.microsoft.com/en-us/library/5a5t63w8.aspx

方法打开注册表项,设置值,并在每次调用时关闭该注册表项。如果需要修改大量值,RegistryKey.SetValue 方法可能会提供更好的性能。类还提供了一些方法,这些方法允许您将访问控制列表 (ACL) 添加到注册表项,在检索值之前测试值的数据类型,以及删除项。

如果您使用的是注册表类的静态方法,那么您不必显式关闭,因为它会自己执行此操作。来自 MSDN

在 .NET Framework 2.0 版中,注册表类还包含 用于设置和检索值的静态 GetValue 和 SetValue 方法 从注册表项。这些方法分别打开和关闭注册表项 使用它们的时间。

但是,如果不是这种情况,则在注册表上调用 clise 将关闭密钥并将其刷新到磁盘(如果其内容已被修改)。

例如
RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample");
rk.Close();

关闭创建的密钥是一种很好的做法。 例如

//not actual code
Key1.Create()
Key 2 = Key1.SetValue();
and so on

因此,您只需相反的顺序即可关闭密钥。从孩子到父母