vue3+electron开发桌面软件(8)—— electron操作注册表,实现windows二级级联菜单

系列文章目录

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



前言

上一篇文章我们已经介绍过如何通过手动操作注册表的方式,自定义我们的二级级联菜单。下面我们要做的就是,怎么在electron中操作注册表,复现上篇文章实现的功能。


一、nsis脚本

如果你查看过本系列文章:vue3+electron开发桌面软件(6)——系统级右键实现文件上传,那么应该了解electron是通过nsis来操作注册表的。如果没有特别浓厚的兴趣,我同样不建议去深入研究nsis,因为这种工具,目前来看,应该只是我们前进路上的一个小插曲,实在不值得浪费太多时间。
我这里已经写好.nsh脚本:

!macro customInstall

   SetRegView 64
   WriteRegStr HKCR "*\shell\test文件上传" "SubCommands" "test.tome.outside;test.tome.secret;test.toother;test.get"
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.tome.outside" "" "发送给自己-互联网"
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.tome.secret" "" "发送给自己-涉密网"
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.toother" "" "发送给他人"
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.get" "" "接收"
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.tome.outside\command" "" '"$INSTDIR\test-NOSECRET.exe" "upload-tome-outside" "%1"'
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.tome.secret\command" "" '"$INSTDIR\test-NOSECRET.exe" "upload-tome-secret" "%1"'
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.toother\command" "" '"$INSTDIR\test-NOSECRET.exe" "upload-toother" "%1"'
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.get\command" "" '"$INSTDIR\test-NOSECRET.exe" "upload-get" "%1"'

!macroend
;卸载时清除
!macro customUninstall
   DeleteRegKey HKCR "*\shell\test文件上传"
   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.tome.outside"
   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.tome.secret"
   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.toother"
   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test.get"
!macroend

二、脚本讲解

先解释用法的关键点:

  1. WriteRegStr:注册表写入,后面的参数是写入的地址,包含了上篇文章提到的项、数值、字符串等概念。
  2. HKCR:地址简写,全称为:“HKEY_CLASSES_ROOT”
  3. DeleteRegKey:注册表删除

这里有几个注意点:

  1. SetRegView 64:提供访问X64注册表的能力,如果不设置,最终的命令会注册到地址“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\”中,在这里维护的命令,无法成功调用(我的64位电脑是这样)。而我们上篇文章介绍过,正确的命令注册地址是:“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\”
  2. 创建“*\shell\test文件上传”项时,不要先创建test文件上传,再创建其属性值SubCommands,有可能会出现上篇文章提到的SubCommands默认项为空的情况,导致二级菜单无法展开。建议按照我的写法,替换成自己的命令行。
  3. 打包成软件后,安装时,选择为所有用户安装,否则会因为权限问题,无法正常写入注册表。如果不想为所有用户安装,需要使用解决下权限问题。
  4. 因为点赞收藏过少,作者君总是彻夜难眠,秀发难全。

总结

按照惯例,我应该把上面第二节的内容放到这里,但是没办法,如果放过来,显得文章太单薄。不过文章体量不大,其实知识点很有价值,直接参考文章的同学,是不会理解我把注册表一项一项地翻一遍,查找二级菜单失效原因时的苦恼的。网络上相关资源甚少,契合electron的就更少了。为了这么几行脚本,把64位和SubCommands空值的坑趟过去,我把Microsoft官网关于注册表的知识都快翻几遍了,衷心希望后面的同学通过上面文章,不需要浪费时间在细枝末节上。

至于为什么把注册表操作水成两篇文章,当然是因为学(认)习(证)需要o(╯□╰)o

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,VueElectron是两个不同的技术,Vue是一种用于构建用户界面的JavaScript框架,而Electron是一种用于构建跨平台桌面应用程序的框架,它使用Web技术(HTML,CSS和JavaScript)来构建应用程序。 如果你是0基础入门,首先需要学习VueElectron的基础知识。以下是一些学习资源: Vue: - Vue官方文档:https://v3.vuejs.org/guide/introduction.html - Vue Mastery:https://www.vuemastery.com/ - Codecademy:https://www.codecademy.com/learn/learn-vue Electron: - Electron官方文档:https://www.electronjs.org/docs - Udemy:https://www.udemy.com/course/electron-from-scratch/ - Pluralsight:https://www.pluralsight.com/courses/electron-fundamentals 一旦你学习了VueElectron的基础知识,你可以开始构建你的第一个Vue3+Electron桌面应用程序。以下是一些步骤: 1. 安装Vue CLI和Electron:使用npm安装Vue CLI和Electron。 ``` npm install -g @vue/cli npm install -g electron ``` 2. 创建Vue项目:使用Vue CLI创建一个新的Vue项目。 ``` vue create my-electron-app ``` 3. 添加Electron支持:在Vue项目中安装electron-builder。 ``` cd my-electron-app vue add electron-builder ``` 4. 编写代码:你现在可以开始编写VueElectron代码了。你可以在Vue组件中使用Electron API来访问系统资源。你可以在Electron主进程中编写Node.js代码以访问底层系统资源。 以上是一个简单的介绍,希望对你有所帮助。祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中二少年学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值