科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何用.NET操作Windows注册表

如何用.NET操作Windows注册表

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在.NET出现前,通过编程访问注册表要应用Windows API(应用程序接口)。.NET Framework通过Microsoft.Win32命名空间简化了这一过程。本文详细说明如何通过.NET操作注册表。

作者:Builder 2007年7月31日

关键字: Office

  • 评论
  • 分享微博
  • 分享邮件

RegistryKey类利用前面列表中的一个Registry类项目来访问单个的注册表键。下面的C# Windows应用程序代码显示ClassesRoot注册表键中一个特殊条目的信息。

RegistryKeyrootKey = Registry.ClassesRoot;

rootKey = rootKey.OpenSubKey(".doc", true);

MessageBox.Show(rootKey.GetValue("").ToString());

MessageBox.Show(rootKey.GetValue("Content Type").ToString());

foreach(string sub in rootKey.GetSubKeyNames()) {

MessageBox.Show(sub);

RegistryKeytmp = rootKey.OpenSubKey(sub);

MessageBox.Show(tmp.Name);

}

foreach(string test in rootKey.GetValueNames()) {

MessageBox.Show(rootKey.GetValue(test).ToString());

}

代码参考正确的命名空间以利用注册表类。

using Microsoft.Win32;

代码访问ClassesRoot键(.doc)中的特定子键。该键对系统如何处理带特定文件扩展名(.doc)的文件进行定义。前两个消息对话框语句显示键本身的信息。提交到RegistryKey类GetValue方法的空值显示默认键值。第二个消息对话框显示与键有关的内容类型(MIME类型)。

第一个foreach块显示注册表键中所有子键的名称。第二个foreach块显示与前两个消息对话框语句一样的信息,但使用GetValueNames方法获得同样的结果(所以你不必知道项目的名称)。

对应的VB.NET代码如下:

Dim rootKey As RegistryKey

rootKey = Registry.ClassesRoot

Dim regSubKey As RegistryKey

Dim subk As String, test As String

Dim tmp As RegistryKey

rootKey = rootKey.OpenSubKey(".doc", True)

MessageBox.Show(rootKey.GetValue("").ToString())

MessageBox.Show(rootKey.GetValue("Content Type").ToString())

For Each subk In rootKey.GetSubKeyNames()

MessageBox.Show(subk)tmp = rootKey.OpenSubKey(subk)

MessageBox.Show(tmp.Name)

Next

or Each test In rootKey.GetValueNames()

MessageBox.Show(rootKey.GetValue(test).ToString())

Next

:子键名不区分大小写。

增加注册表值

查阅注册表值不错,但有时候你需要增加注册表值。通常,应用程序把注册表当作存储应用程序相关数据的中央仓库。这种方法可以接受,但为避免系统或应用程序出现问题,我们不建议修改Windows系统或其它应用程序的值。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章