vue3+electron开发桌面软件(7)——修改注册表,创建级联菜单

news2025/1/31 8:25:30

系列文章目录

系列第一篇: vue3+electron开发桌面软件入门与实战(0)——创建electron应用


文章目录

  • 系列文章目录
  • 前言
  • 一、创建右键级联菜单
  • 二、了解注册表结构
    • 1.手动添加注册表——一级菜单
    • 2.手动添加注册表——二级菜单父菜单
    • 3.手动添加注册表——二级菜单子菜单
  • 总结


前言

最近实在是太懒了,差不多得有三四五六个月不更新博客了吧。经过这段时间的反思,我悟出一个道理——躺平是真鸡儿舒服~~

项目还在继续做,所以一些不涉及业务的思路也可以继续分享了。

我们前面已经讲解过如何借助nsis管理注册表,实现简易的右键菜单,那么如果我们要实现如下图所示的级联菜单,又当如何呢?


一、创建右键级联菜单

如果同学们和我一样,以前端萌新的身份,硬刚windows注册表,经历漫长的垃圾文章洗礼,大概率最终你会总结出注册表的一个浅显结论:

在注册表中的合适位置,创建出合适的文件目录和参数,就能被windows系统识别,表现出相应的操作。

如果你查询到了microsoft官网:https://learn.microsoft.com/zh-CN/troubleshoot/windows-server/performance/windows-registry-advanced-users(这里不放链接并不是失误,而是我不想你点过去看它)

在这里插入图片描述
看到人家的介绍没,面向高级用户,扪心自问,你打算深究注册表吗?

如果你打算研究一番,请自行去搜索上面链接,并关闭这篇文章。

如果你不想去了解它里面运行的原理,不想了解它提供的api方式,只想不求甚解地操作注册表,来完成我们业务需求,请看下文。

二、了解注册表结构

1.手动添加注册表——一级菜单

上篇文章已经讲解过如何通过nsis来维护注册表,实现系统右键菜单的功能。

这里我们来通过手动的方式,在“计算机\HKEY_CLASSES_ROOT*\shell\”路径下维护一个“test”,如图:
在这里插入图片描述
这时候,我们右键点击文件,发现已经有test这个菜单项了。

这时候,我们为这个“test”菜单项增加一个子项“command”,并且为其维护数据为:cmd.exe

  • 第一步——新建项:

在这里插入图片描述

  • 第二步——维护command项关联的exe文件,例如:cmd.exe

在这里插入图片描述
确定后,右键点击test,发现弹出cmd黑窗口。

2.手动添加注册表——二级菜单父菜单

创建二级菜单有一个关键的字符串名:SubCommands。

我们需要为我们要维护的菜单,新建字符串值(注意,这里不是新建项!!!)如图:

在这里插入图片描述
然后维护新建的字符串值:
在这里插入图片描述
最终得到的效果如图:

在这里插入图片描述
这时候右键点击文件,我们会得到如图所示的效果:

在这里插入图片描述
test菜单后面有一个箭头,这说明我们的SubCommands项是生效的。

但是这里会有一个小坑,我们把上面维护SubCommands字符串的图拿过来:

在这里插入图片描述
会发现,默认项的数据是空的,因为我曾经点击过test的默认项,然后点击了确认,这就相当于维护了一个空值的默认项,默认项是空值时,以后你不论做任何努力,都不会正确加载出二级菜单。所以这是个大坑。

我们删除test这个项,然后把上面的操作重新做一遍,注意千万不要点开默认后再点确认。得到正确的test项如图:

在这里插入图片描述
当然,这时候,我们右键菜单中的test项还是没有二级菜单,因为它的两个二级菜单【test1】【test2】都还没有维护。test只能算是二级菜单的父菜单。

3.手动添加注册表——二级菜单子菜单

我经过无数垃圾文章和少数大佬精品的洗礼,终于找到二级菜单应该维护的注册表地址:“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\”

我们在注册表中地址栏输入这个地址,然后找到地址的位置:

在这里插入图片描述
在这个shell里直接维护我们的test二级菜单如图:
在这里插入图片描述
这时候再去右键点击文件,发现test项已经有两个二级菜单了:

在这里插入图片描述
我们在上面【test1】【test2】下面维护个command,设置数值数据为cmd.exe,如图:

在这里插入图片描述
此时我们点击test——>test1,会打开cmd命令行。


总结

C站要求一个月内写四篇文章才能申请认证,这不是要了老命吗o(╯□╰)o

本文总结:创建二级子项步骤:

  1. 在注册表“计算机\HKEY_CLASSES_ROOT*\shell\”地址下维护test;
  2. test下维护字符串值SubCommands,SubCommands中的数据设置为:test1;test2 注意两个值之间用分号间隔
  3. 在注册表“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\”地址下,维护test1和test2对应的命令。

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

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

相关文章

IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称: 广州荣士电子有限公司 认证产品:IC-14W网络IC卡读写器 测试日期: 2022-11-04 …

基于SVG的HMI组件

人机界面是自动化领域不可或缺重要组成部分。人机界面系统的设计看上去并没有太大的技术门槛,但是设计一个HMI系统的工作量是巨大的,如果你没有足够的耐心和精力是难以完成一个通用HMI系统的。构建UI控件库就是一个似乎永远完不成的事情,用户…

12.基于蒙特卡洛抽样的电动汽车充电负荷计算

说明书 MATLAB代码:基于蒙特卡洛抽样的电动汽车充电负荷计算 关键词:电动汽车 蒙特卡洛模拟 抽样 充放电负荷 参考文档:《主动配电网多源协同运行优化研究_乔珊》第3.2节,完全复现 仿真平台:MATLAB 优势&#xf…

JavaWeb——IO、存储、硬盘、文件系统相关常识

目录 一、IO 1、定义 二、存储和硬盘 1、存储 2、硬盘 三、文件系统 1、文件 (1)、定义 (2)、分类 (3)、操作 2、树形结构和目录 3、路径 (1)、定义 (2&…

elementui是怎么做表单验证的?

文章目录 前言elementui是怎么做表单验证?步骤 一、 表单验证校验代码?二、el-button提交验证代码2.validate方法深入了解1. 有参数2. 无参数 总结 前言 在项目开发中,我们经常会遇到表单保存的功能,在表单保存前,常常…

Salesforce如何防止黑客攻击和数据泄露?了解他们的安全措施!

安全性一直是Salesforce密切关注的问题。Google的安全浏览报告指出,2022年网络钓鱼网站的数量增加了80%。面对着黑客攻击、安全漏洞、数据泄露等不安全事件频发,实施更强大的安全措施比以往更加重要。 调查显示,电子邮件目前是网…

阿里巴巴图标,font-family字体样式

阿里巴巴官网:https://www.iconfont.cn/ 如有需要,请注意到文章最后的问题。 一,图标 1,搜索关键词,点击图标 -> 加入购物车 -> 添加到项目 2,两种方式 (1)选择 Font cla…

推荐一个好工具,可以替代 swagger 生成文档

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 S…

SpringBoot扫包排除指定包(配置文件形式)

1、背景​ 在有些时候,不同环境可能需要用代码不同模块的能力,但是不同环境的项目包是一致的。这块我们想到的最简单的办法是在maven打包的时候打不同的模块,但是这样往往需要出多个包,虽然这种方式是正路但运维同学嫌麻烦。第二种…

Java面试题--MySQL索引

一. 索引介绍 MySQL的索引是一种数据结构,它可以帮助MySQL快速定位需要访问的记录。索引可类比于一本书的目录,通过它可以快速找到某个特定的记录。 MySQL支持多种类型的索引,每种索引都有其优势和局限性,常用的包括&#xff1a…

python类型转换

我们就想那我们目前接触到的三种类型做一下转换 分别是 字符串 浮点数 正整数 可能会有刚接触编程的小伙伴在想 没事类型转换什么呢? 其实在实际开发中 这东西用的不要太多 根据我们目前认识的类型 先用到三个方法 我们编写代码 String_int str(111); print(St…

初阶数据结构——时间复杂度和空间复杂度

目录 算法效率算法的复杂度 时间复杂度时间复杂度的概念习题 空间复杂度空间复杂度的概念习题 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 什么是算法? 算法…

java+ssm603企业人事档案管理系统带前端springboot

人事管理系统的设计与实现采用Spring、SpringMVC和MyBatis作为主体框架,系统设计遵循界面层、业务逻辑层和数据访问层的Web开发三层架构。采用B/S结构,使得系统更加容易维护。人事管理系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理资料文件模块、员工模块、文件…

深度相机初体验:Hello World

当我的组长给了我一个深度相机,倒霉的事情就开始了,在使用的过程中遇到的某些问题搜不到,头秃啊呜呜呜呜呜呜呜呜 配置: ubuntu20.04(我实在是懒得去升级了,一旦升级就可能会出现找不到教程的可能性&#x…

运行时内存数据区之执行引擎(一)

执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软…

【MATLAB基础绘图第8棒】绘制局部放大图

MATLAB绘制局部放大图 1 工具准备 MATLAB官网-ZoomPlot(Kepeng Qiu. Matlab Central, 2022) 初始数据图绘制完成后,调用以下代码: %% 添加局部放大 zp BaseZoom(); zp.plot;1.1 具体绘制步骤 具体绘制步骤如下: 通过鼠标左键框选作图区…

JavaScript中如何删除对象/数组中null、undefined、空对象及空数组实例代码

如下,对于一个多层嵌套的数据结构:例如 要做的就是删除所有value为空,数组为空,对象为空的字段 const querys {name: 测试,httpMethod: ,httpHeaders: [{key: Accept,value: test,},],restParams: [{key: ,value: ,},],body: {b…

GZIPOutputStream GZIPInputStream 数据压缩解压

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 数据压缩&解压 前言一、最终走上了压缩的路 GZIPOutputStream二、收到数据进行解压 GZIPInputStream三、测试Demo四、验证结果总结 前言 最近接手了一批性能优化… 遇到…

全注解下的SpringIoc

Spring架构中的核心理念就是IOC和AOP,可以说,Spring的强大离不开这两大特性。 因为spring boot推荐采用注解开发,所以文中主要介绍基于注解的Spring Ioc。 IoC容器简介 Spring IoC 容器是个管理 Bean(在Spring 中把每个需要管理…

VMware vCenter Server 8.0U1 发布 - 集中式管理 vSphere 环境

请访问原文链接:VMware vCenter Server 8.0U1 - 集中式管理 vSphere 环境,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-04-18, VMware vSphere 8.0U1 发布。 详见:VMware vSphere 8 Update 1 新…