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:

  1. var WinReg = require('winreg');
  2. var startOnBoot = {
  3. enableAutoStart: function(name, file, callback){
  4. var key = getKey();
  5. key.set(name, WinReg.REG_SZ, file, callback || noop);
  6. },
  7. disableAutoStart: function(name, callback){
  8. var key = getKey();
  9. key.remove(name, callback || noop);
  10. },
  11. getAutoStartValue: function(name, callback){
  12. var key = getKey();
  13. key.get(name, function(error, result){
  14. if(result){
  15. callback(result.value);
  16. }
  17. else{
  18. callback(null, error);
  19. }
  20. });
  21. }
  22. };
  23. var RUN_LOCATION = '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
  24. function getKey(){
  25. return new WinReg({
  26. hive: WinReg.HKCU, //CurrentUser,
  27. key: RUN_LOCATION
  28. });
  29. }
  30. function noop(){}
  31. module.exports = startOnBoot;

使用:

  1. var startOnBoot = require('startOnBoot.js');
  2. //设置开机启动
  3. startOnBoot.enableAutoStart('<写入注册表的key>', process.execPath);
  4. //取消开机启动
  5. startOnBoot.disableAutoStart('<写入注册表的key>');

这里有一点要注意,就是process.execPath :使用process.cwd() 获取当前目录是错误的,因为node-webkit在执行的时候,会将所有源码释放到一个临时目录(名字随机的),如下图:

这些都是临时目录,所以process.cwd() 会临时目录的地址,使用process.execPath 才能会的exe文件执行的路径。另外,如果使用inno setup打包的话,卸载时需要删除注册表信息,参考这篇文章:http://keenwon.com/1317.html

项目中开机自启动的 node-webkit开机自启动的更多相关文章

  1. laravel项目中通过nvmw安装node.js和npm 开发环境-- windows版

    windows版本安装 此教程执行的时候,网速一定要好.不然可能出现各种错误. 如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ git clone nvmw  直接从 githu ...

  2. node 项目中 koa2 环境搭建 以及项目发布

    环境搭建: 1.Koa 必须使用 7.6 以上的版本.如果你的版本低于这个要求,就要先升级 Node. 查看node版本方法:node -v 2.使用koa-generator生成器生成项目 安装ko ...

  3. vue-cli项目中怎么mock数据

    在vue项目中, mock数据可以使用 node 的 express模块搭建服务 1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data ...

  4. 解决webpack项目中打包时候内存溢出的bug JavaScript heap out of memory

    vue 项目 npm run dev 的时候一直卡住不动:后来找到报错是 Ineffective mark-compacts near heap limit Allocation failed - J ...

  5. windows系统下,express构建的node项目中,如何用debug控制调试日志

    debug是一款控制日志输出的库,可以在开发调试环境下打开日志输出,生产环境下关闭日志输出.这样比console.log方便多了,console.log只有注释掉才能不输出. debug库还可以根据d ...

  6. TypeScript在node项目中的实践

    TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法.最近的一个新项目开 ...

  7. 基于Node 的http转发demo,项目中请使用express+http-proxy-middleware

    var http = require("http"); var data = ''; function getData() { const options = { host: 'w ...

  8. 夺命雷公狗---node.js---19之项目的构建在node+express+mongo的博客项目4mongodb在项目中的基本引入

    首先我们在命令行下先建立这个库: 然后我们在项目中引入mongodb的模块: var MongoClient = require('mongodb').MongoClient; var DB_STR ...

  9. react项目中对dom元素样式修改的另一种方法以及将组件插入到node节点中

    在项目中,以前如果遇到对dom元素的操作都是直接获取dom元素,比如说: 但是如果修改的样式比较多的话,不如直接"切换"dom元素,如下例子: 这样会节省一些性能.因为操作dom的 ...

  10. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

随机推荐

  1. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组

    软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...

  2. JAVA操作mysql

    所需jar包:mysql-connector-java.jar 代码: import java.sql.*; import java.util.ArrayList; import java.util. ...

  3. Block(一)基础-b

    一.概述 Block是C级别的语法和运行时特性.Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存.堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block ...

  4. PWA 入门: 写个非常简单的 PWA 页面

    Progressive Web Apps 是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案. 这篇文章里我们来完成一个非常简单的 PWA 页面. 一个 PWA ...

  5. 面向对象的Shell脚本

    还记得以前那个用算素数的正则表达式吗?编程这个世界太有趣了,总是能看到一些即别出心裁的东西.你有没有想过在写Shell脚本的时候可以把你的变量和函数放到一个类中?不要以为这不可能,这不,我在网上又看到 ...

  6. 【转】TeXmacs:一个真正“所见即所得”的排版系统

    TeXmacs:一个真正“所见即所得”的排版系统 好久没有推荐过自己喜欢的软件了,现在推荐一款我在美国做数学作业的私家法宝:TeXmacs.我恐怕不可能跟以前那么有闲心写个长篇的 TeXmacs 说明 ...

  7. iOS Terminating app due to uncaught exception &#39;NSInternalInconsistencyException&#39;, reason: &#39;unable to

    刚接触iOS,依照教程操作执行出现错误 Terminating app due to uncaught exception 'NSInternalInconsistencyException', re ...

  8. 从sys/power/state分析并实现S3C2416的睡眠和唤醒

    环境: PC: debian-7.6.0 ARM CPU: S3C2416 Linux-Kernel: 3.6.0(FriendlyARM) U-boot: 1.3.4 一.问题来源 依据须要,在S3 ...

  9. Ubuntu局域网下利用client联网

    Ubuntu是一个非常好的Linux操作系统,可是对于刚刚安装使用它的新手来说如何用Ubuntu连入网络却是一大难关.如今就记录一下自己在Ubuntu下上网的过程. ★client 将client解压 ...

  10. [转]Http Message结构学习总结

    最近做的东西需要更深入地了解Http协议,故死磕了一下RFC2616-HTTP/1.1协议,主要是了解Http Message结构及每部分含义,在此总结一下,写一个模拟发送HTTP请求的工具,由于时间 ...