1. 程式人生 > 其它 >修改登錄檔自啟動程式demo

修改登錄檔自啟動程式demo

在這裡插入圖片描述

修改登錄檔核心方法

package com.changestart.service;

import java.io.IOException;

public class ChangeStartService {

	/**
	 * 通過修改登錄檔設定是否開機自動啟動
	 * Reg 引數說明 /v 所選項之下要新增或刪除的值名 /t RegKey 資料型別(reg_sz字串) /d 要分配給新增的登錄檔
	 * ValueName 的資料 /f 不用提示就強行刪除
	 * @param isStartAtLogon
	 * @throws IOException
	 */
	public static
void changeStart(boolean isStartAtLogon) throws IOException { final String regKey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; String myAppName = "AutoStartTest"; //exe4j中定義的程式運行當前路徑,在exe4j中配置-Dexe.path=${EXE4J_EXEDIR} String runPath = System.
getProperty("exe.path"); String exePath = "\""+runPath+"AutoStart.exe"+"\""; Runtime.getRuntime().exec("reg " + (isStartAtLogon ? "add " : "delete ") + regKey + " /v " + myAppName + (isStartAtLogon ? " /t reg_sz /d "
+ exePath : " /f")); } }

程式介面

package com.changestart.view;

import java.awt.*; //導包
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.*;

import com.changestart.service.ChangeStartService;

public class ChangeStartView extends JFrame { // 繼承JFrame頂級容器類

	// 定義元件
	JPanel jp1, jp2; // 定義面板元件
	JLabel jlb1, jlb2; // 定義標籤元件
	JButton btn_submit, btn_cancel; // 定義按鈕元件
	JCheckBox jcb_start; // 定義多選框元件

	public static void main(String[] args) {
		new ChangeStartView(); // 顯示介面
	}

	public ChangeStartView() {
		// 建立元件
		jp1 = new JPanel(); // 建立面板
		jp2 = new JPanel();
		btn_submit = new JButton("儲存"); // 建立按鈕
		btn_cancel = new JButton("退出");
		jlb1 = new JLabel("是否自啟動?"); // 建立標籤
		jcb_start = new JCheckBox("自啟"); // 建立複選框
		// 設定佈局管理器
		this.setLayout(new GridLayout(2, 1)); // 三行一列網格佈局

		// 新增元件
		this.add(jp1);
		this.add(jp2);

		jp1.add(jlb1); // 新增面板1的元件
		jp1.add(jcb_start);

		jp2.add(btn_submit); // 新增面板2的元件
		jp2.add(btn_cancel);
		btn_submit.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				if (jcb_start.isSelected()) // 選中
				{
					int temp = JOptionPane.showConfirmDialog(ChangeStartView.this, "程式將開機自啟!", "提示", JOptionPane.YES_NO_OPTION);
					if (temp == JOptionPane.YES_OPTION) {

						try {
							ChangeStartService.changeStart(true);
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						
						//關閉當前視窗!
						dispose();
					}
				} else {// 未選中
					int temp = JOptionPane.showConfirmDialog(ChangeStartView.this, "將取消開機自啟!", "提示", JOptionPane.YES_NO_OPTION);
					if (temp == JOptionPane.YES_OPTION) {

						try {
							ChangeStartService.changeStart(false);
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						
						//關閉當前視窗!
						dispose();
					}
				}
			}
		});

		btn_cancel.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				dispose();
			}
		});

		// 設定窗體屬性
		this.setTitle("修改登錄檔自啟動測試..."); // 設定介面標題
		this.setSize(350, 150); // 設定介面畫素
		this.setLocation(200, 200); // 設定介面初始位置
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設定虛擬機器和介面一同關閉
		this.setVisible(true); // 設定介面視覺化
	}
}