一、加到开机自动启动程序的注册表:

package com.zit;

import java.io.IOException;

public class Start {

    public static void ChangeStart(boolean isStartAtLogon) throws IOException{
String regKey = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
String myAppName = "notepad++";
String exePath = "D:\\Notepad++\\notepad++.exe";//开机启动程序本地目录
Runtime.getRuntime().exec("reg " + (isStartAtLogon?"add ":"delete ") + regKey + " /v "
+ myAppName + (isStartAtLogon?" /t reg_sz /d " + exePath:" /f"));
} public static void main(String[] args) {
try{
ChangeStart(true);
}catch(Exception e){
e.printStackTrace();
} } }

这里是把程序加到系统自动启动额外程序(非系统服务)的注册表,

用户必须登录系统才可以,如果不登陆,则不行,

如果要让windows开机,不登陆,就能自动启动,需要将这个程序放到系统服务注册表里

二、加到系统服务,实现自动启动

实现方法:使用第三方工具Java Service Wrapper

(还有微软自带的工具srvany,加到系统服务,但是貌似在windows7及之后版本不可以使用)

下载地址:https://wrapper.tanukisoftware.com/doc/english/download.jsp

Community社区版是免费的,Professional和Standard版本需要licence

windows 64位目前没有免费版,所以,我的电脑是64位,但下载的是32位版本(貌似实现了,有问题后面再说)

接下来需要做的是:

(1)新建一个文件夹Test,在里面新建四个文件夹:bin、conf、lib、logs

(2)有一个Java类,然后用Eclipse把他导出成jar包

package com.zit.controller;

public class Test {

    public static void main(String[] args) throws Exception{
for(int i = ; i < ; i++){
System.out.println(i);
} } }

把Test.java放在Test目录下,把它的jar包放在lib目录下(其实,只需要它的Test.jar就可以)

(3)下载包解压后

  a、 下载包src/bin/的App.bat.in,InstallApp-NT.bat.in,UninstallApp-NT.bat.in  和  bin/下的wrapper.exe    放在新建的bin目录下,把后缀.in去掉。

App.bat(可以直接运行程序),

InstallApp-NT.bat(安装成Windows服务),

UninstallApp-NT.bat(卸载Windows服务)】

  b、下载包lib目录下的wrapper.dll、wrapper.jar放到新建的lib下

  c、下载包src/conf下的wrapper.conf.in放到新建的conf下,把后缀.in去掉

(4)修改wrapper.conf

#电脑要有jdk环境
wrapper.java.command=%JAVA_HOME%/bin/java #这个不用改变
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp #lib包下的jar文件
wrapper.java.classpath.=../lib/wrapper.jar
wrapper.java.classpath.=../lib/Test.jar #lib目录
wrapper.java.library.path.=../lib #Test.java的完整路径(包含包名)
wrapper.app.parameter.=com.zit.controller.Test #服务名
wrapper.name=服务名
wrapper.displayname=显示服务名
wrapper.description=服务描述

(5)完成后图示:

  

Test目录

  

bin子目录:

  

conf子目录:

  

lib子目录:

  

logs子目录:

  运行时自动生成的一个log文件

运行:

1、点击bin文件夹下的App.bat

成功的效果:

2、点击bin文件夹下的InstallApp-NT.bat:将会注册为系统服务

  默认没有启动,手动启动一下,可以看到自动生成的log文件会有运行的日志

3、点击bin文件夹下的UninstallApp-NT.bat:将会卸载该服务

Java:程序开机自启动的更多相关文章

  1. android 程序开机自启动

    今天遇到程序开机自启动,然后查了一下,很简单,就记录一下. 开机自启动,一般我们是开启启动一个广播,然后在广播里启动Activity或者别的服务. 我们要做的很简单,就是在AndroidManifes ...

  2. Linux下的应用程序开机自启动

    Linux下的应用程序开机自启动,目前我知道的有2种: 1.将启动语句写到/etc/rc.local 2.在init.d放置启动脚本 第一种,很简单,直接写进去就行,比如说: /db/mongodb/ ...

  3. Linux设置程序开机自启动,系统命令chkconfig及linux /etc/rc.d/目录的详解

     整理了linux下程序开启几种方式,转载相关博客做统一记录 <linux程序设置开机自启动>转载自:https://www.cnblogs.com/flcz/p/7691532.html ...

  4. Linux设置程序开机自启动

    注意: 作者测试时,Linux版本为RedHat6,同时应用在CentOS6应该也可以(作者未实测,但有同事在CentOS6上使用可行),系统版本的不同,可能造成操作上的差异(CentOS7就与Cen ...

  5. CentOS 程序开机自启动方法总结

    1.把启动程序的命令添加到/etc/rc.d/rc.local文件中 CentOS系统下管理开机自启动的配置文件是/etc/rc.d/rc.local,所以只需编辑这个文件,在里面加入相应的启动命令即 ...

  6. win8程序开机自启动管理

    主要介绍利用系统自身的工具来管理开机自启动,而非第三方的工具,自己了解了,也写出来分享给大家@.·.@ 1.程序设置开机自启动 a. 打开计算机资源管理器-->进入"C:\Progra ...

  7. ubuntu16.04 程序开机自启动设置及启动优化

    使用过程中,为了方便使用,有一些程序需要开机时自启动应用,下面将介绍一下ubuntu16.04下程序的开机自启动设置方法. 1  建立一个可执行程序的运行脚本如 keepalive.sh.内部写入要执 ...

  8. Ubuntu 18.04 上设置桌面程序开机自启动

    需求 在新安装的 Ubuntu 18.04 系统上,将有些不可描述的程序开机之后自动启动 Startup Applications Preferences 打开 Startup Application ...

  9. WinForm 之 应用程序开机自启动设置方法

    一.原理 需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下. 二.实现方式 方法1:在生成安装程序时配置: 方法2:在程序运行时动态配置. 三.在生成安装程序时配置 1.右击安装 ...

  10. CentOS设置程序开机自启动的方法

    转自:http://www.centos.bz/2011/09/centos-setup-process-startup-boot/ 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. ...

随机推荐

  1. Codeforces 838 B - Diverging Directions

    B - Diverging Directions 思路: 用dfs序+线段树维护子树中距离(从1到u,再从u到1)的最小值 代码: #pragma GCC optimize(2) #pragma GC ...

  2. Codeforces 101572 D - Distinctive Character

    D - Distinctive Character 思路:bfs 使最大的匹配数最小,转换一下,就是使最小的不匹配数最大,用bfs找最大的距离 代码: #pragma GCC optimize(2) ...

  3. for...in和for...of循环的区别

    使用for...in和for...of分别对Array,Set,Map做测试 var a=["A","B","C"]; var b=new ...

  4. Tomcat基本组件、其功能和处理请求的过程

      一.Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中 Tomcat的各个组件是 ...

  5. 以太坊 web3.js 文档翻译及说明

    这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅. 这里还几个实用DEMO,供大家 ...

  6. Build Castles(构建城堡)

    Charlemagne, the King of Frankie, 英文描述 请参考图片中的说明. 中文描述 根据给出的数组确定能够盖多少城堡. 思路和点评 我不能确定我的思路是正确的,也欢迎大家参与 ...

  7. re正则表达式方法

    目录 1.python正则匹配 1.1 re.search 正则表达式 1.2 re.match() 正则表达式 1.3 re.match与re.search的区别 1.4 检索和替换 1.5 正则表 ...

  8. 00-自测5. Shuffling Machine

    Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...

  9. 【转】XP系统远程桌面连接2012R2提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证

    一.背景 因对方客户的服务器是内网的,需要操作更新服务器的数据库表信息,因此远程对方客户办公司的电脑远程服务器:但是在远程桌面连接出现问题. 二.错误问题 错误问题:“远程计算机需要网络级别身份验证, ...

  10. 【Oracle】【7】去掉字符串中的空格/字符

    SELECT TRIM(' 去除前后空格 ') FROM DUAL; SELECT REPLACE(' 去除 任意位置的空格 ', ' ', '') FROM DUAL; 扩展: 1,both, tr ...