项目中开机自启动的 node-webkit开机自启动
node-webkit开机自启动
Posted in 前端, 后端 By KeenWon On 2014年8月11日 Views: 1,215
node-webkit没有提供开机自启动的接口,在github的issue里也没有找到靠谱的解决方法,不过经过一番寻觅,找到了node下操作注册表的方法,就是winreg(这么好的项目星星少的可怜),还有一个使用winreg修改注册表实现开机启动的demo:node-start-on-windows-boot。demo很简单,可以直接在项目里使用:
文件startOnBoot.js:
- var WinReg = require('winreg');
- var startOnBoot = {
- enableAutoStart: function(name, file, callback){
- var key = getKey();
- key.set(name, WinReg.REG_SZ, file, callback || noop);
- },
- disableAutoStart: function(name, callback){
- var key = getKey();
- key.remove(name, callback || noop);
- },
- getAutoStartValue: function(name, callback){
- var key = getKey();
- key.get(name, function(error, result){
- if(result){
- callback(result.value);
- }
- else{
- callback(null, error);
- }
- });
- }
- };
- var RUN_LOCATION = '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
- function getKey(){
- return new WinReg({
- hive: WinReg.HKCU, //CurrentUser,
- key: RUN_LOCATION
- });
- }
- function noop(){}
- module.exports = startOnBoot;
使用:
- var startOnBoot = require('startOnBoot.js');
- //设置开机启动
- startOnBoot.enableAutoStart('<写入注册表的key>', process.execPath);
- //取消开机启动
- startOnBoot.disableAutoStart('<写入注册表的key>');
这里有一点要注意,就是process.execPath :使用process.cwd() 获取当前目录是错误的,因为node-webkit在执行的时候,会将所有源码释放到一个临时目录(名字随机的),如下图:

这些都是临时目录,所以process.cwd() 会临时目录的地址,使用process.execPath 才能会的exe文件执行的路径。另外,如果使用inno setup打包的话,卸载时需要删除注册表信息,参考这篇文章:http://keenwon.com/1317.html
项目中开机自启动的 node-webkit开机自启动的更多相关文章
- laravel项目中通过nvmw安装node.js和npm 开发环境-- windows版
windows版本安装 此教程执行的时候,网速一定要好.不然可能出现各种错误. 如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ git clone nvmw 直接从 githu ...
- node 项目中 koa2 环境搭建 以及项目发布
环境搭建: 1.Koa 必须使用 7.6 以上的版本.如果你的版本低于这个要求,就要先升级 Node. 查看node版本方法:node -v 2.使用koa-generator生成器生成项目 安装ko ...
- vue-cli项目中怎么mock数据
在vue项目中, mock数据可以使用 node 的 express模块搭建服务 1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data ...
- 解决webpack项目中打包时候内存溢出的bug JavaScript heap out of memory
vue 项目 npm run dev 的时候一直卡住不动:后来找到报错是 Ineffective mark-compacts near heap limit Allocation failed - J ...
- windows系统下,express构建的node项目中,如何用debug控制调试日志
debug是一款控制日志输出的库,可以在开发调试环境下打开日志输出,生产环境下关闭日志输出.这样比console.log方便多了,console.log只有注释掉才能不输出. debug库还可以根据d ...
- TypeScript在node项目中的实践
TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法.最近的一个新项目开 ...
- 基于Node 的http转发demo,项目中请使用express+http-proxy-middleware
var http = require("http"); var data = ''; function getData() { const options = { host: 'w ...
- 夺命雷公狗---node.js---19之项目的构建在node+express+mongo的博客项目4mongodb在项目中的基本引入
首先我们在命令行下先建立这个库: 然后我们在项目中引入mongodb的模块: var MongoClient = require('mongodb').MongoClient; var DB_STR ...
- react项目中对dom元素样式修改的另一种方法以及将组件插入到node节点中
在项目中,以前如果遇到对dom元素的操作都是直接获取dom元素,比如说: 但是如果修改的样式比较多的话,不如直接"切换"dom元素,如下例子: 这样会节省一些性能.因为操作dom的 ...
- SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
随机推荐
- 我的Android之旅——学习、项目、心态
本文作者: 伯乐在线 - 唐韧 .未经许可,禁止转载!欢迎分享原创到伯乐头条. 来源:唐韧 学习Android也一年多了,项目做了五六个,有大有小,有难有易.一直以来都没有好好总结过,今天周六休息,就 ...
- oracle三大范式(转载)
标准化表示从你的数据存储中移去数据冗余 (redundancy)的过程.如果数据库设计达到了完全的标准化,则把所有的表通过关键字连接在一起时,不会出现任何数据的复本 (repetition).标准化的 ...
- MySQL -- 全文检索(自然语言全文检索)
自然语言全文本检索缺省或者modifier被设置为in natural language mode,都是进行自然语言检索.对于表中的每一行,match()都会返回一个关联值. mysql> CR ...
- Android 自定义漂亮的圆形进度条
公司有这样一个需求,实现这个圆弧进度条 所以,现在就将它抽取出来分享 如果需要是圆帽的就将,下面这句代码放开即可 mRingPaint.setStrokeCap(Paint.Cap.ROUND);// ...
- 实现一个简单的android开关
近期在学习android中的graphics中绘图系列.依照大神思路.找葫芦画瓢实现了一个开关.如图下: 记录一下实现方式: 1.画背景 上图形状.分成两个半圆与一个矩形,那么代码能够写成: priv ...
- JAX-RS annotations
@Path("resource_path"):The @Path annotation defines the path to the base URL or resource_p ...
- POJ 1129 Channel Allocation(DFS)
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13173 Accepted: 67 ...
- Linux版迅雷(Xware)安装配置方法
Linux版迅雷下载请见:Xware下载 解压下载的压缩包 核对MD5或SHA1校验值 解压得到以下三个文件 安装文件 在/usr/local/下创建thunder文件夹,将上面的三个文件放入,然后运 ...
- Java项目多数据源配置 (转)
由于种种原因,有的时候可能要连接别人的数据库,或者不同的数据库没法自动转换,重构起来数据量又太大了,我们不得不在一个项目中连接多个数据源.从网上找了各种资料,只有这位大神给出的解决方案一下子就成功了. ...
- java中比较两个double类型值的大小
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型,具体 BigDecimal的详细说明参考jdk开发帮助文档. import java.math.BigDecimal; pu ...