• Java:程序开机自启动


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

    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 = 0; i < 999; 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.1=../lib/wrapper.jar
    wrapper.java.classpath.2=../lib/Test.jar
    
    #lib目录
    wrapper.java.library.path.1=../lib
    
    #Test.java的完整路径(包含包名)
    wrapper.app.parameter.1=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:将会卸载该服务

  • 相关阅读:
    十天冲刺开发第六天个人工作总结
    十天冲刺开发第五天个人工作总结
    人月神话阅读笔记1
    第六周进度条
    构建之法阅读笔记6
    连通数组的最大子数组和
    团队项目成员和题目
    第五周进度条
    四则运算———安卓版
    构建执法阅读笔记5
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/8142823.html
Copyright © 2020-2023  润新知