项目中开机自启动的 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 ...
随机推荐
- Xcode全局替换内容,一键Replace
有时需要在整个项目里,全局修改某一段话或文字,可以这样快速实现: 1.打开查找功能 2.输入你要替换的内容 比如,我这边想全局修改作者名称 3.点击Find,会出现一个框,会有replace出来,就和 ...
- springmvc概述及框架原理
一. 前言 MVC不是框架而是一种设计模式. MVC的全名Model View Controller,即模型-视图-控制器的缩写,这是一种设计模式,而非架构.MVC它强制的使用应用程序的输入.处理.和 ...
- 使用Java调用JS
import junit.framework.TestCase; import javax.script.ScriptEngine; import javax.script.ScriptEngineM ...
- IOS的动态性
IOS的动态性主要来自以下方面的特性:动态类型,动态绑定,动态载入,SEL类型. 1.IOS的动态类型:(强类型)id可以在代码运行时判断对象的类型.使用id类型(又称强类型)可以在运行的时候使用任何 ...
- Apache2.2和Apache2.4中httpd.conf配置文件 权限的异同
Windows环境从Apache2.2改成Apache2.4后httpd.conf中的设置异同. 1.权限设定方式变更 2.2使用Order Deny / Allow的方式,2.4改用Require ...
- Android之Activity系列总结(三)--Activity的四种启动模式
一.返回栈简介 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即返回栈,也叫任务栈)中. 首先介绍一下任务栈: (1)程序打开时 ...
- VC设置视图背景颜色方法
视图的背景一般来说是白色的,在缺省情况下,它和系统定义的颜色COLOR_WINDOW是一致的.设计者一般会希望自己的程序可以让用户轻松地改变窗口背景颜色,或是用漂亮的图片来充填背景.我们可以用Wind ...
- git学习笔记(二)—— 创建版本库&&版本管理
一.创建版本库 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: mkdir gitHub_CXWcd gitHub_CXW git init Initialized empty G ...
- Jquery 选择器 详解 js 判断字符串是否包含另外一个字符串
Jquery 选择器 详解 在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools ...
- Inside i++
i++.++i.i=i+1.效率怎么样?看过一本书上说,i++比i=i+1好的地方是因为i=i+1中的那个1要占用一个寄存器,所以速度没有i++快,于是我想验证一下.另外,以前听说过Java中的“i= ...