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


发布者 kris  发布时间 1494730081361
关键字 JS学习  Node.JS 
在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 程序。










 热门文章 - 分享最多
  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的几种方法

 相关阅读
  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)

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA