一、注冊表基本知识

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为例)。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

2. ContentType:这里指定了这个文件内容是什么类型。这个值能够接受非常多參数,这个參数的列表能够再MSDN中查找ContentType看到。

这个值存在的意义是当系统要处理这个文件内容的时候。和这个后缀名关联在一起的程序会依据这个值决定怎样打开并展现文件里的内容。

3.PerceivedType:这个值也是一个类型的标记。他的用处呢?举个样例。假设这个值的内容是video的时候。

我们打开一些视频播放器,很多播放器第一次打开非常可能会搜索电脑硬盘,寻找能够播放的文件并展如今“播放列表”中。而这个搜索过程就是依据这个值进行的。

以下跳转到负责真正处理和打开工作的键中,对于我们的样例.txt。处理键txtfile,找到该键,而且所有展开,能够看到例如以下内容:



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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。分别设置默认图标和默认启

动程序。

 

 

C#注冊表操作汇总的更多相关文章

  1. c++ 操作注冊表

    1.       注冊表简单介绍 注冊表是为Windows NT和Windows95中全部32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (W ...

  2. C# 系统应用之注冊表使用具体解释

    在平时做项目时,我们有时会遇到注冊表的操作,比如前面我们须要获取IE浏览器地址栏的信息.获取"我的电脑"地址栏输入的目录信息.USB近期使用信息等.注冊表项是注冊表的基本组织单位, ...

  3. QSettings读写注冊表、配置文件

    简述 普通情况下.我们在开发软件过程中,都会缓存一些信息到本地,能够使用轻量级数据库sqlite.也能够操作注冊表.读写配置文件. 关于QSettings的使用前面已经介绍过了.比較具体,见" ...

  4. 《解读window核心编程》 之 注冊表

    1 注冊表的作用及组织形式 Windows系统使用注冊表来存储系统和应用程序配置数据.非常多系统和应用程序重要的配置的信息都存储在注冊表中. 注冊表是一种以树型结构组织的数据库.树的每个节点称 作键( ...

  5. PLSQL Developer过期要注冊表

    打开执行输入 regedit 打表注冊表 删除 HKEY_CURRENT_USER\Software\Allround Automations HKEY_CURRENT_USER\Software\M ...

  6. 64位Windows操作系统中的注冊表

    x64系统上有x64.x86两种注冊表,记录下. 64 位Windows系统中的注冊表分为 32 位注冊表项和 64 位注冊表项.很多 32 位注冊表项与其对应的 64 位注冊表项同名. 在64位版本 ...

  7. YII用户注冊表单的实现熟悉前台各个表单元素操作方式

    模还是必须定义两个基本方法.还有部分label标签映射为汉字,假设进行表单验证,还要定义一些验证规则: <? php /* * 用户模型 * */ class user extends CAct ...

  8. VC++ 读写注冊表,注冊文件图标关联

    #include <string> #include <iostream> #include <Windows.h> #include <shlobj.h&g ...

  9. 怎样利用WordPress创建自己定义注冊表单插件

    来源:http://www.ido321.com/1031.html 原文:Creating a Custom WordPress Registration Form Plugin 译文:创建一个定制 ...

随机推荐

  1. NOI2017 [NOI2017]游戏 【2-sat】

    题目 题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行nn 场游戏,每场游戏使用 ...

  2. linux上部署thinkphp5提示500

    解决方法一:LNMP 1.4上也可以直接使用lnmp1.4/tools/ 目录下的 ./remove_open_basedir_restriction.sh,输入网站的全路径(如/www/wwwroo ...

  3. (超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库

    (超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库 本地创建了一个 xcode 工程项目,现通过 命令行 将该项目上传到 github 或者 gitlab 远程仓库,具体 ...

  4. 【CF725D】Contest Balloons(贪心,堆)

    题意:acm队伍可以得气球,相同气球数是一个排名.每个队伍有一个气球数上限,如果该队伍的气球数大于上限 该队伍被淘汰.给了你队伍的气球数,你的气球可以给别人,问你最大可能的排名. (2 ≤ n ≤ 3 ...

  5. 学习javascript设计模式之发布-订阅(观察者)模式

    1.发布-订阅模式又叫观察者模式,它定义对象之间一种一对多的依赖关系. 2.如何实现发布-订阅模式 2-1.首先指定好发布者 2-2.给发布者添加一个缓冲列表,用户存放回调函数以便通知订阅者 2-3. ...

  6. mybatis动态sql片段与分页,排序,传参的使用与一对多映射与resultMap使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  7. 【Visual Studio】The project appears to be under source control, but the associated source control plug-in is not installed on this computer

    [问题描述]用 Visual Studio 2013打开一个项目时,出现下面错误: [问题原因]参考 http://codeverge.com/asp.net.web-forms/the-projec ...

  8. 转 Kafka入门经典教程

    Kafka入门经典教程 http://www.aboutyun.com/thread-12882-1-1.html 问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic. ...

  9. CI调试应用程序

    该分析器将在页面下方显示基准测试结果,运行过的 SQL 语句,以及 $_POST 数据.这些信息有助于开发过程中的调试和优化. 在控制器中设置以下方法以激活该分析器: $this->output ...

  10. LeetCode OJ——Subsets

    http://oj.leetcode.com/problems/subsets/ 计算一个集合的子集,使用vector<vector<int> >,使用了进制的思想. #inc ...