在Windows 系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对文件的某些操作。比如你写了一些 Node.JS 脚本可以通过这种方式右健直接运行,非常方便。
将 Node.JS 添加到Windows右健菜单中非常简单,只需要更改几行注册码即可,将建一个 node.reg 文件,复制以下几行,然后单击运行即可,这个脚本会将所有扩展名为 .js 的文件添加 "Run In 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 程序。
回复 (0)
微信扫码 立即评论