文件和注册表关联

news2024/9/24 13:15:50

        注册表是Windows操作系统的信息存储中心,存放着包括计算机硬件配置、已安装软件的设置信息、当前用户的环境设置及某些文件类型与对其进行访问和操作的应用程序之间的联系等重要信息。Windows操作系统早期版本中存放在初始化文件(.ini)中的许多信息现在都存放在注册表中了。

        我们开发的软件常常要建立具有独特数据格式的数据文件。作为一个专业化的商品软件,其安装程序有责任将其所用到的特殊格式的数据文件在注册表中进行注册,以使之和Windows操作系统更好地集成在一起,方便用户操作。

1.准备工作

        1)请先在桌面空白处单击鼠标右键,在弹出菜单中选择“新建\文件夹”菜单项,并把“新建文件夹”重命名为“KAt81”,作为我们假设软件的工作目录。

        2)在My_Edit文件夹上双击鼠标左键来打开该文件夹,在其窗口菜单中选择“文件\新建\文本文件”菜单项,或在其文件列表区域单击鼠标右键并在弹出菜单中选择“新建\文本文件”菜单项,把新创建的一个“新建   文本文件.   txt”重命名为Test.KAt81。注意如果重命名前文件名中没有显示扩展名“.txt”,需要在窗口菜单中选择“查看\选项...”菜单项,在“选项”对话框中选择“查看”页,把“隐藏已登记的文件类型的MS-DOS文件扩展名”项改为不选状态。

        3)打开“资源管理器”选择C:\Windows子目录下的Notepad.exe,按住Ctrl键将其拖到  KAt81文件夹中,并重命名为ETCV1.0.exe。

        说明:现在,文件Test.KAt81的图标为带有Windows标志的缺省图标,文件类型为“KAT81文件”。在其文件名上双击鼠标左键将弹出“打开方式”对话框让用户选择与之相关联的应用程序(这里请勿进行任何操作即选择“取消   ”按钮关闭对话框)。在其文件名上单击鼠标右键弹出菜单中的第一项为“打开方式”而非通常的“打开”。“新建”菜单组中也没有有关该文件类型的选项。

2.在注册表中设置文件类型

        (1)点击WIN+R组键,在弹出对话框中输入regedit并单击“确定”按钮启动注册表编辑器。

        (2) 在根目录HKEY_CLASSES_ROOT下创建项,名称:.KAt81

        1)在树形列表中选择主键HKEY_CLASSES_ROOT,单击鼠标右键并在弹出菜单中选择“新建\主键”,并把新建的主键名由“新项 #1”改为“.KAt81”。

        2)在右边窗口中双击“(默认)”并在“键值”编辑框内输入MyEtcFile后单击“确定”按钮。

        (3)在根目录HKEY_CLASSES_ROOT下创建项,名称:MyEtcFile

        1)在树形列表中选择主键HKEY_CLASSES_ROOT,单击鼠标右键并在弹出菜单中选择“新建\主键   ”,并把新建的主键名由“新项 #1”改为“MyEtcFile”。

         2)在右边窗口中双击“(默认)”并在“键值”编辑框内输入“ETC信息数据”后单击“确定”按钮。

        (4)关闭注册表管理器。

        (5)打开任务管理器,选择Windows资源管理器,如下图:

        右键点击“重新启动”

        文件类型变成了“ETC信息数据”

3.在注册表中设置文件图标

        1)打开注册表管理器。

        2)在树形列表中选择HKEY_CLASSES_ROOT\MyEtcFile,在其下创建DefaultIcon主键。

        3)选择DefaultIcon,在右边窗口中双击“(默认)”并在“键值”编辑框内输入“D:\我的文档\Desktop\KAt81\ETCV1.0.exe,0”后单击“确定”按钮。

        4)关闭注册表管理器。

        5)重启Windows资源管理器后,再打开Kat81文件夹,看到文件Test.KAt81的图标已被修改为记事本应用程序的图标。

        说明:实际上,文件的图标是由其DefaultIcon键值决定的。键值分两部分,中间用逗号隔开。前面是包含图标资源的文件名,可以为一个应用程序、动态链接库或资源文件(.icon文件),后面是一个数字,正值表示图标在文件中的索引(从0开始),负值(加一个“-”号)表示图标的资源标识(它的名字)。如果是文件的第一个图标资源,可以省略逗号和数字。

        将图标设置.ico图标文件,方法如下:

        打开注册表,选择HKEY_CLASSES_ROOT\MyEtcFile\DefaultIcon,在右边窗口中双击“(默认)”并在“键值”编辑框内输入“D:\我的文档\Desktop\KAt81\empty.ico”后单击“确定”按钮。

        重启Windows资源管理器后,文件图标变化如下:

4.在右键菜单中添加“打开”和“打印”功能

        1)打开注册表管理器。

        2)在树形列表中选择HKEY_CLASSES_ROOT\MyEtcFile,在其下创建Shell主键。

        3)在刚刚创建的Shell下创建Open主键,再在Open下创建Command主键。

        4)选择Command,在右边窗口中双击“(默认)”并在“键值”编辑框内输入【"C:\Windows\notepad.exe" %1】后单击“确定”按钮。

        5)回到Shell下,创建Print主键,再在Print下创建Command主键。

        6)选择Command,在右边窗口中双击“(默认)”并在“键值”编辑框内输入“"C:\Windows\notepad.exe" /p %1”后单击“确定”按钮。

        7)关闭注册表管理器。

        说明:现在重新回到My_Edit文件夹,在文件名Test.KAt81上单击右键,弹出菜单中已没有了“打开方式”项而增加了“打开”和“打印”菜单项。单击“打开”将用ETCV1.0.exe打开Test.KAt81进行编辑,单击“打印”将把Test.KAt81送往默认打印机进行打印。各菜单项下主键Command的数据为此菜单项对应的操作命令,其中%1表示当前文件名。这里只建立了比较常用也是相对标准的“打开”和“打印”菜单项,按同样格式,我们也可以建立其他任何菜单项。

5.在桌面右键菜单中“新建”中添加“ETC数据文件”

        1)打开注册表管理器。

        2)在树形列表中选择HKEY_CLASSES_ROOT\.KAt81,在其下创建ShellNew主键。  

        3)选择ShellNew主键,在窗口菜单中选择“编辑\新建\串值”,并把新建的串值名称改为NullFile。

        4)关闭注册表管理器。

        说明:现在,请在“桌面”空白处单击右键,移动鼠标到“新建”菜单项,会看到其中已经新加了一项“ETC信息数据”,如下图所示。

        选择该项就会在“桌面”上新建一个名为“新建 ETC信息数据.KAt81”的新文件,如下图所示。

        其实,我们还可以通过在ShellNew主键下建立其他串值对新建的文件进行更多一些控制,这样的串值共有四个,它们是:

        说明:现在,请在“桌面”空白处单击右键,移动鼠标到“新建”菜单项,会看到其中已经新加了一项“ETC信息数据”,选择该项就会在“桌面”上新建一个名为“新建   ETC信息数据.KAt81”的新文件。

        其实,我们还可以通过在ShellNew主键下建立其他串值对新建的文件进行更多一些控制,这样的串值共有四个,它们是:

        (1)NullFile:它的串值数据是 " ",用于创建一个空文件。若存在此项,则Data和FileName项将被忽略。

        (2)Data:它的串值数据是binary_value,用于创建一个包含有二进制数据binary_value的新文件。若存在NullFIle或FileName项,此将被忽略。

        注册表设置如下图。

        点击新建/ETC信息数据后, 新建文件的内容,如下图:

        (3)FileName:它的串值数据是path_name,用于生成一个由path_name所指定的文件的拷贝。若存在NullFIle项,此将被忽略。

        (4)Command:它的串值数据是path_name,用于创建新文件后,执行path_name所指定的命令行。

        设置如下图:

        新建的ETC信息数据文件均为空文本,如下图所示。

        至此,我们已经完成了基本的数据文件注册工作。需要说明的是,上述工作我们是通过手工操作完成的,在实际应用中应该由安装程序通过调用RegCreateKeyEx()和RegSetValueEx()等Win32 API函数自动完成,并在卸载程序中通过调用RegDeleteKey()等函数予以删除。应用程序的卸载信息注册在

        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall主键下面,可以在这里新建一个名为MyEdit的主键,除了“(默认)”   外再新建两个串值:DisplayName的数据指定一个在“控制面板”中的“添加/删除应用程序”对话框中显示的字符串,UninstallString的数据则指定运行卸载程序的命令行,包括路径、可执行文件名和所需的命令行参数。

        另外,通过扩展Windows外壳(Shell)可以在某种类型文件的“属性”中添加新的属性页,这涉及到一些比较深入的编程技术,在此不予讨论。

参考资料:

 文件和程序关联 (注册表) (360doc.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2078111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32单片机_(HAL库)】3-4-3【中断EXTI】【智能排队控制系统】排队系统代码框架搭建

3-4-2系统框图及硬件接线 3.软件 beep、exti、gate、LCD1602、led、tasks驱动文件添加GPIO常用函数中断配置流程main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "tasks.h" #include "gate.h"…

联华证券-股票冲高回落的意义:上方抛压恢复

“股票冲高回落”是指股票价格在一段时期内迅速上涨至较高水平后,随后又下跌的现象。这种情况通常表明市场对股票的短期上涨缺乏持续的支撑。以下是冲高回落的主要意义和原因: 1.上方抛压较重 抛压是指大量的卖出订单,这些订单可能在股价达到…

刘海屏的优雅回归?华为Mate 70 Pro定义新美学

在智能手机的发展历程中,华为Mate系列一直是高端旗舰的代表。而今,华为Mate 70 Pro的神秘面纱终于揭开,其回归的刘海屏设计和独特的寰宇舷窗设计,再次将华为的设计理念推向了新的高度。 刘海屏的回归:经典与创新的融合…

用于低质量蒙面人脸识别的一致子决策网络

Consistent Sub-Decision Network for Low-Quality Masked Face Recognition 摘要 提出了一种利用由多个dropout块组成的在线一致性评估结构来获得对应于人脸不同区域的子决策网络,以获得对应于不同面部区域的子决策,并通过加权双向KL散度来约束子决策&…

Transformer模型-5-Multi-Head Attention

上图红色圈中的部分为 Multi-Head Attention,是由多个Self-Attention组成的,虽然Encoder与Decoder中都有Multi-Head Attention,但他们略有区别。Encoder block包含一个 Multi-Head Attention, 而Decoder block包含两个 Multi-Head…

从聊天机器人到智能算法:Facebook AI技术的最新应用

人工智能(AI)技术的飞速发展正推动社交网络进入一个全新的智能化时代。作为全球领先的社交平台之一,Facebook(现已改名为Meta)在AI技术应用方面不断创新,推动了从聊天机器人到智能算法的诸多突破。本文将探…

C++第十三弹 -- STL之stack深度剖析与模拟实现

文章索引 前言1. stack的介绍2. stack的使用3. stack的模拟实现4. stackOJ题目4.1 最小栈4.2 栈的压入弹出序列4.3 用栈实现队列 总结 前言 在现代C编程中,STL(标准模板库)是一个不可或缺的工具。它提供了一套通用的模板类和算法&#xff0c…

Vue 2.x时间转换为北京时间(+8)

文章目录 当前时间格式效果图理想时间格式效果图转换方法总结 当前时间格式效果图 非中国常用时间格式,在上图中给可以看到,选择的时间为:2024-8-26 ~ 2024-8-27,返回结果却是:2024-08-25TXX:XX:XXZ,明显不…

C/C++开发神器CLion全新发布v2024.2——更适用于嵌入式开发

CLion是一款专为开发C及C所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C,同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CM…

教你识别原装与翻新芯片IC

在IC采购中,鉴别芯片真伪至关重要。原装芯片经过严格测试,而散新、翻新芯片可能存在质量和稳定性问题。市面上的IC芯片林林总总、各式各样,如果不注意区分,有时很难看出各种料有何不同。 假芯片制作手段包括翻新、打磨等&#xf…

2024年小红书图文制作超火爆风格,1单19.9!趣味性插画AI表情包项目思路

今天我想跟大家分享一个每天只需花20分钟就能轻松赚钱的AI表情包项目。 这个项目在小红书上非常受欢迎,因为它符合小红书的用户习惯,而且操作简单。下面我来详细讲讲如何利用软件快速创作有趣的插画! 项目简介 这个项目的原理很简单&#x…

自助共享空间小程序怎么做 共享空间小程序系统开发制作方法

最近很多老板想要做一个自己公司的自助共享空间小程序系统,但是不知道该怎么做,本次瀚林就为大家详细介绍一下各种自助共享空间小程序系统的开发制作方法为大家做参考。 目前市面上的自助共享空间有很多类型例如常见的: 娱乐空间、棋牌室、共…

SpringBoot中MyBatis使用自定义TypeHandler

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

2-77 基于matlab-GUI的图像分割程序

基于matlab-GUI的图像分割程序,分别包括超像素 (superpixels)分割 SLIC算法,mean shift 图像分割,H算法(Felzenszwalb和Huttenloch提出的图像分割算法),SEEDS(Superpixels Extracted via Energy…

docker-compose单机部署rocketmq集群(双主双从,同步双写)

1.本文以RocketMQ 5.3.0 版本的镜像为例。 2.首先先更新docker,之前旧版docker,导致rocketmq一直起不来,一直报错。 3.安装docker-compose。 服务器环境(目前只用192.168.25.135后期改ip地址即可) | 1 | 192.168.…

ArcGIS图斑导出CAD后变成三维多段线?

欢迎关注同名微信公众号,更多文章推送: 正常情况下,将ArcGIS中的图层导出为CAD,生成的是闭合多段线: 导出的CAD: 但是有时候导出的CAD变成三维多段线: 三维多段线有多麻烦用过CAD画图的人应该都…

【GD32 MUC 移植教程】从 GD32F10x 移植到 GD32F30x

1. 前言 对于使用 GD32 系列微控制器进行产品开发的设计人员来说,因产品及功能升级,往往需要将一种微控制器替换成另一种微控制器,在保留既有功能的情况下增加新功能。为了更快地推出新产品,设计人员经常要将应用程序移植到新的…

【数据分享】1999—2022年地级市各类交通工具的客货运量和拥有量数据(Shp/Excel格式)

在之前的文章中,我们分享过基于2000-2023年《中国城市统计年鉴》整理的1999-2022年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、一般公共预算收支状况、…

Transformer模型-4-Inputs

Encoder的输入层和Decoder的输入层是一样的结构,都是由Token embedding(词向量 word embedding) 和 Positional embedding(位置向量) 组合而成,并到最终的 输入向量x。 Transformer引入Positional embedding主要是解决词序问题。…

开源程序实操:岩土工程渗流问题的有限单元法应用

有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法。尽管各类商业软件使用方便,但其使用对用户来说往往是一个“黑箱子”。相比而言,开源的有限元程序计算方法透明、计算过程可控,…