C#注册表操作汇总

一、注册表基本知识

1)       结构

键->项->子项->值项(名称、类型、数据)

REG_SZ         字符串

REG_BINARY    二进制

REG_DWORD    双字

2)       组成

1.HKEY_CLASSES_ROOT  定义了系统中所有文件类型标识和基本操作标识

该主键包含文件扩展名和应用程序关联的信息

主键下的子键决定如何在资源管理器和桌面中显示该类文件及其图标

不是一个单独的分支,而只是HKEY_LOCAL_MACHINE\SOFTWARE\Classes的一个映射

2.HKEY_CURRENT_USER  当前用户的配置信息,包括环境变量、桌面设置、网络

连接、软件运行信息等

3.HKEY_LOCAL_MACHINE 本机相关的系统信息,包括硬件信息、驱动信息、内存

数据、总线数据等

其中的信息与特定用户无关,可供所有用户使用。

4.HKEY_USER 所有用户的信息

该子键下保存了改用户的桌面设置、背景位图、应用程序快捷键、字体等信息。而这些信息都可以通过控制面板等工具设定。应用程序也不直接访问该主键,而是通过HKEY_CURRENT_USER主键进行访问。

5.HKEY_CURRENT_CONFIG 本地计算机启动时的配置的相关信息。如环境信息、

桌面主题、背景色之类

也只是HKEY_LOCAL_MACHINE\CONFIG结构中的一个映射。

3)       C#操作注册表

<span style="font-size:14px;">Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\\\MapWinGISConfig",false);

Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\\\MapWinGISConfig");</span>

二、使用注册表

l    在“资源管理器右键/新建”和“桌面右键菜单/新建”中添加新建自己的文件类型。

该示例使用代码表示:

//设置右键

RegistryKeykey1 =
Registry.ClassesRoot.CreateSubKey(".acc");

key1.SetValue("",
"acc");

RegistryKeykey2 = key1.CreateSubKey("ShellNew");

key2.SetValue("NullFile",
"");

key1.Close();

key2.Close();

//设置关联后缀名

key1 = Registry.ClassesRoot.CreateSubKey("acc");

key1.SetValue("",
"accfile");

key2 = key1.CreateSubKey("DefaultIcon");

key2.SetValue("",
"c:\\acc.ico");  //c:\\Windows\\notepad.exe,1

key2.Close();

key2 = key1.CreateSubKey("shell\\open\\command");

key2.SetValue("",
"c:\\windows\\notepad.exe");

Tip: .acc的子键ShellNew就代表创建一个右键新建菜单,而ShellNew下面的值NullFile代表空文件。

HKEY_CLASSES_ROOT\.zip\ShellNew值

FileName d:\Program Files\HaoZip\ZipNew.data 代表什么呢?

c:\\Windows\\notepad.exe,1  表示不适用该exe的图标,使用系统默认的图标,若不设置就会显示默认打开程序的小图标

c:\\Windows\\notepad.exe,0表示使用和exe一样的图标

总结右键新建设置步骤:

1.在HKEY_CLASSES_ROOT中新建子项后缀名“.acc”。

2.设置.acc的默认值“accfile”该值可以随便,但最好是acc或accfile什么的。

3.新建.acc子项ShellNew,并新建字符串值 NullFile\FileName 注意必须是这两个名并且必

须设置,但值设置与不设置没影响,根据需要。

4.新建accfile子项并设置默认值“acc文件”该值必须设置,用于指示新建的acc文件的名

称。 至此右键新建菜单就完成了。

5.但是为了让新建的文件有图标和有关联程序,需设置DefaultIcon和shell\open\command\

这样新建的acc文件就有了关联程序。

l    将指定扩展名的文件管理到指定的程序

该示例使用手动设置:

首先讲述这些键中的值项的含义(以.txt为例)。

一般后缀子键中会设置这如下三个值

1.(默认):在关联中最重要的一个值,决定了当前后缀的文件交给谁并且怎么处理,这里大家看到的内容是“txtfile”。其实这个.txt键只是相当于一个索引,该键中并没有实际的处理说明,而实际的处理都交给了另一个键,那个键的名字就是这里的“(默认)”给出的。

2. ContentType:这里指定了这个文件内容是什么类型,这个值可以接受很多参数,这个参数的列表可以再MSDN中查找ContentType看到。这个值存在的意义是当系统要处理这个文件内容的时候,和这个后缀名关联在一起的程序会根据这个值决定如何打开并展现文件中的内容。

3.PerceivedType:这个值也是一个类型的标记。他的用处呢?举个例子,如果这个值的内容是video的时候。我们打开一些视频播放器,许多播放器第一次打开很可能会搜索电脑硬盘,寻找可以播放的文件并展现在“播放列表”中,而这个搜索过程就是根据这个值进行的。

下面跳转到负责真正处理和打开工作的键中,对于我们的例子.txt,处理键txtfile,找到该键,并且全部展开,可以看到如下内容:

选中最顶层的txtfile看右边界面显示的内容:

1.(默认):这里是文件类型的说明,大家右击文件图标,选择属性的时候,在属性中的文件类型框中可以看到这个值。

2.EditFlags:标识这个文件的读写权限,比如是只读,还是可读写。。。等等,这个在文件属性里也能修改。

3.FriendlyTypeName:这个值是应用程序的友好名称。这个值其实就是说明这个处理键对应的应用程序是哪个,大家打开文件属性找一找,也能找到这个值的身影。不过记住,这个值可不是起决定作用。决定作用在子键中。

回到txtfile键层次图中:.

1.DefaultIcon设置这一类型文件的图标。可以直接指定ico也可以使用notepad.exe,0即使用exe的图标。,0表示使用和exe相同的图标,,1表示不使用exe图标而是用系统默认图标。若不设置任何值则会显示默认代开程序的小图标。

2.
shell下面通常会有 open,print,edit等等。。。

open
该后缀文件的默认代开程序,在程序后面加%1
表示双击时默认启用程序。edit表示编辑时的文件、print打印时的文件。

总结文件关联手动实现步骤:

 1.HKEY_CLASSES_ROOT下新建子项”.abc”,设置默认值 abcfile

2.HKEY_CLASSES_ROOT 下新建子项”abcfile”, 不设置该默认值。

3.在abcfile下新建子项,DefaultIcon和shell\open\command。分别设置默认图标和默认启

动程序。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-04 20:27:28

C#注册表操作汇总的相关文章

【读书笔记】C#高级编程 第二十四章 文件和注册表操作

(一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByRefObject--这是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据. FileSystemInfo--这是表示任何文件系统对象的基类. FileInfo和File--这些类表示文件系统上的文件. DirectoryInfo和Directory--这些类表示文件系统上的文件夹.

c# 注册表操作,创建,删除,修改,判断节点是否存在

用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和 删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1:要操作注册表,我们必须要引入必要的命名空间: C#代码    using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~ 2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支: ClassesRoot,CurrentUser,Use

[C#]注册表操作

原文:[C#]注册表操作 概念 在介绍注册表操作前,有必要了解注册表的一些基本常识. 在此简要介绍一下. 注册表 注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息.注册表组织层次结构的格式,基于存储在它的元素的逻辑顺序. 当将信息存储在注册表中,选择要存储的信息类型所基于的适当位置. 在Windows 3.x操作系统中,注册表是一个极小文件,其文件名为Reg.dat,里面只存放了某些文件类型

C#简单注册表操作实例

1.简介操作 //设置注册值 private void Button_Click(object sender, RoutedEventArgs e) { //路径及间隔符号要正确 //1.如果指定路径不存在,则创建 //2.如果指定键存在,则覆盖值 string path = "HKEY_CURRENT_USER\\myRegOne"; Registry.SetValue(path, "Expend", "hellow world!"); Mes

C#注册表操作类(完整版)

下面贴出自己用C#写的注册表操作类,欢迎大家拍砖! 1.注册表基项静态域 1 /// <summary> 2 /// 注册表基项静态域 3 /// 4 /// 主要包括: 5 /// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 6 /// 2.Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 7 /// 3.Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键 8 //

Ch25 文件和注册表操作(2)-- 读写文件

老早之前就有一个想法,写一个小程序,可以读取文档,可以查找替换关键字,其实也是很简单的,正好最近看到文件系统这章,今天下午没事也就做了一个,这里总结一下: 1.用StreamReader读取文本文件,编码用Encoding.Default. StreamReader sr = new StreamReader(filePath,Encoding.Default); rtbContent.Text = sr.ReadToEnd(); sr.Close(); //释放锁定资源 2.统计要查找的字符,

内核模式下的注册表操作

注册表操作 注册表里的几个概念: 1.       创建关闭注册表项 NTSTATUS    ZwCreateKey(     OUT PHANDLE  KeyHandle,     IN ACCESS_MASK  DesiredAccess, //访问权限,一般为KEY_ALL_ACCLESS     IN POBJECT_ATTRIBUTES  ObjectAttributes,     IN ULONG  TitleIndex, //一般为NULL     IN PUNICODE_STRI

delphi 注册表操作(读取、添加、删除、修改)完全手册

DELPHI VS PASCAL(87)  32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操作注册表,要创建一个TRegistry对象:ARegistry := TRegistry.Create: 2.释放TRegistry对象.对注册表操作结束后,应释放TRegistry对象所占内存:ARegistry.Destroy. 二.指定要操作的键 操作注册表时,首先应指定操作的主键:先给属性R

Windows内核函数(3) - 内核模式下的注册表操作

Windows内核函数(3) - 内核模式下的注册表操作 2010-12-13 13:37:16|  分类: 驱动编程 |  标签:status  hkey  ulsize  注册  kdprint  |举报|字号 订阅 注册表里的几个概念: 1.       创建关闭注册表项 NTSTATUS   ZwCreateKey(    OUT PHANDLE  KeyHandle,    IN ACCESS_MASK  DesiredAccess, //访问权限,一般为KEY_ALL_ACCLESS