OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

利用Windows注册表将你的Node.JS程序添加到右健菜单直接运行


分享到
分类 JS学习   关键字 Node.JS   发布 kris  1494730081361
注意 转载须保留原文链接,译文链接,作者译者等信息。  
在Windows 系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对文件的某些操作。比如你写了一些 Node.JS 脚本可以通过这种方式右健直接运行,非常方便。

通过注册表文件


将 Node.JS 添加到Windows右健菜单中非常简单,只需要更改几行注册码即可,将建一个 node.reg 文件,复制以下几行,然后单击运行即可,这个脚本会将所有扩展名为 .js 的文件添加 "Run In Node.JS" 命令:

//This only works on js file
[HKEY_CURRENT_USER\Software\Classes\JSFile]

[HKEY_CURRENT_USER\Software\Classes\JSFile\shell]

[HKEY_CURRENT_USER\Software\Classes\JSFile\shell\Node]
"Icon"="C:\\Program Fil\\nodejs\\node.exe"
@="Run in Node.js"

[HKEY_CURRENT_USER\Software\Classes\JSFile\shell\Node\command]
@="cmd /k node \"%1\""

原始脚本可在这个地址下址: http://matthiasschuetz.com/en/nodejs-run-scripts-from-context-menu


通过Node.JS添加

有时侯我们无法通过写注册表文件来运行某个程序,比如说用户没有安装将Node.JS安装到默认目录,这时我们可以通过Node.JS来用编程的方式动态更改注册表。

具体原理可看这篇文件,即通过 child process 调用reg命令来实现。Node.JS更改Windows注册表regedit的几种方法

通过 reg add /? 我们可以了解 reg add的详细用法


C:\Users\Administrator>reg add /?

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]

  KeyName  [\\Machine\]FullKey
           Machine  远程机器名 - 忽略默认到当前机器。远程机器上
                    只有 HKLM 和 HKU。
           FullKey  ROOTKEY\SubKey
           ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
           SubKey   所选 ROOTKEY 下注册表项的完整名。

  /v       所选项之下要添加的值名。

  /ve      为注册表项添加空白值名(默认)。

  /t       RegKey 数据类型
           [ REG_SZ    | REG_MULTI_SZ | REG_EXPAND_SZ |
             REG_DWORD | REG_QWORD    | REG_BINARY    | REG_NONE ]
           如果忽略,则采用 REG_SZ。

  /s       指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符
           如果忽略,则将 "\0" 用作分隔符。

  /d       要分配给添加的注册表 ValueName 的数据。

  /f       不用提示就强行覆盖现有注册表项。

例如:

  REG ADD \\ABC\HKLM\Software\MyCo
    添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo

  REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
    添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)

  REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
    添加一个值(名称: MRU,类型: REG_MUTLI_SZ,数据: fax\0mail\0\0)

  REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%
    添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)
    注意: 在扩充字符串中使用插入符号 ( ^ )


用 JS 语言直接实现即可,与上例不同,我们这里将会为所有类型的文件都添加 "Run in NodeJS"选项:

var cp = require('child_process')

cp.exec('REG ADD HKEY_CLASSES_ROOT\\*\\shell\\NodeJS /t REG_SZ /d "Run in NodeJS" /f', function(err, stdout, stderr) {
  console.log(err)
  cp.exec('REG ADD HKEY_CLASSES_ROOT\\*\\shell\\NodeJS\\command /t REG_SZ /d "C:\\Program Files\\nodejs\\node.exe \"%1\"" /f', function(err, stdout, stderr) {
    console.log(err)
  })
})

之后你就可以用编程的方式,动态更改里面的内容了,你也可以更改为默认执行你的 Node.JS 程序。


社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. JavaScript使用ES6的Class面向对象继承时 this is not defined 解决方法
  2. Docker改名Moby:急于商业化陷入品牌更名乱象
  3. Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课
  4. TCP/UDP协议比较:在Node.JS中UDP服务器和客户端通信示例
  5. Node.JS通过原型和类继承EventEmitter,实现收发事件的几种方法
  6. 如何基于SVG矢量图制作一个可填写信息的可视化表单-OnceVI
  7. 周鸿祎:一些程序员没有商业意识,却又很自负,一看就知道不会创业
  8. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  9. 学哪种语言的最赚钱?调查显示JavaScript和SQL是程序员最常用的语言
  10. Node.JS更改Windows注册表regedit的几种方法
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. JavaScript中splice与slice的区别、数组的复制以及在指定位置添加删除元素
  2. Node.JS中如何判断递归嵌套的所有回调函数已经执行完毕,以读取目录下所有文件为例:计数比Promise方式快将近一倍
  3. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  4. JavaScrip字符串模板表达式中的反引号怎么打?
  5. Node.JS用Socket实现FTP Server服务器和Client客户端
  6. Node.JS更改Windows注册表regedit的几种方法
  7. Debian下设置Linux Shell脚本开机自动启动Node.JS进程
  8. Node.JS通过原型和类继承EventEmitter,实现收发事件的几种方法
  9. 可视化Web报表OnceVI中用户输入表单验证与提交
  10. Web报表OnceVI如何制作条形码与打印二维码(Barcode/Qrcode)

 关键字 - Node.JS
  1. 沃尔玛为什么要采用Node.js
  2. node.js使用unzip解压zip包指定文件,提取 word/excel (docx/pptx/xlsx) 文本内容
  3. Node.JSv8的5个新特性:支持string padding与async/await和object参数省略
  4. Node.JS中如何判断递归嵌套的所有回调函数已经执行完毕,以读取目录下所有文件为例:计数比Promise方式快将近一倍
  5. node.js中fs.stat里的atime,mtime,ctime,birthtime在debian下的更新规则与区别
  6. NodeJS的DNS使用:域名解析,MX记录查询,SPF反垃圾邮件测试
  7. 在nodejs中使用Redis缓存和查询数据及Session持久化(Express)
  8. 是什么让Node.js比Java更快?为什么NodeJS这么快?
  9. 用纯Node.JS弹出Windows系统消息提示框(MessageBox)
  10. 利用Windows注册表将你的Node.JS程序添加到右健菜单直接运行

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号