java实现桌面程序开机自启动

news2024/10/11 4:15:16

问题:

最近用java写一个桌面闹钟程序,需要实现开机自启动功能

解决办法:

jna官网:https://github.com/java-native-access/jna?tab=readme-ov-file

使用jna库可以轻松实现

下载jna-5.15.0.jar和jna-platform-5.15.0.jar这两个库文件,加入到工程

下面给出是工具类

package org.lionsoul.dclock.util;


import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;

public class RegistryUtil {

    public static void addStartup(String name, String path){

            Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", name, path);
    }

    public static void deleteStartup(String name){
        Advapi32Util.registryDeleteValue(WinReg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", name);
    }

    public static boolean isStartWithSystem(String name) {

        String dhRegister = getReg("Software\\Microsoft\\Windows\\CurrentVersion\\Run", name);

//        String dClock = WinRegistry.getString(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", name);
        System.out.println("isStartWithSystem dhRegister :" + dhRegister);
        if (dhRegister != null && dhRegister.length() > 0){
            return true;
        }
        return false;
    }





    public static String getReg(String key, String valueName) {
        String value;

        try {
            value = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, valueName);
        } catch (Exception e) {
            value = "";
        }

        return value;
    }

}

调用的代码:

if (RegistryUtil.isStartWithSystem(__APP_NAME) ) {
    RegistryUtil.deleteStartup(__APP_NAME);
} else {
	RegistryUtil.addStartup(__APP_NAME, System.getProperty("user.dir") + "\\DHClock.cmd");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

封装、继承、抽象类

面向对象共有三个特征:封装,继承,多态。 封装 封装表现: (1)方法就是一个最基本封装体。 (2)类其实也是一个封装体。 封装的好处: (1)提高…

Jquery serialize()、serializeArray()、$.param()

param()方法 1.定义:param() 方法创建**数组或对象**的序列化表示。》》该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用。2.语法:$.param(object,trad)object:必需,规定要序列化的数组或对象。trad:可选。布尔…

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要,尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧,从代码结构、工具使用到团队协作的多个角度进行详细分析: 1. 模块化设计 模块化设计 是提高代码可维护性和…

Linux——grep-wc-管道符

grep命令 利用关键字过滤文件行,找到关键字所在那一行 wc命令 统计文件行数,单词数量 wc命令 不带选项全选 wc -c test.txt 字节bytes数量 wc -m test.txt 字符数量 wc -l test-txt 行数 wc -w test-txt 单词数量 管道符 | 将左边命令的…

【LLM论文日更】| BGE-M3E embedding模型

论文:https://arxiv.org/pdf/2402.03216代码:GitHub - FlagOpen/FlagEmbedding: Retrieval and Retrieval-augmented LLMs机构:BAAI领域:embedding model发表: ​ 研究背景 研究问题:这篇文章要解决的问…

AI时代大厂AI项目管理学习路线

AI时代避免被裁员,大厂AI项目管理学习路线主要包括: 1、AI项目管理基础技能。 2、项目管理AI技术知识。 3、数据分析与决策。 4、AI项目管理工具。 5、AI项目管理知识扩展。 01 AI项目管理基础技能。 AI项目管理基础技能构成了项目管理的骨架&…

SQL 干货 | 使用 EXISTS 编写 SELECT 查询

基于 SQL 中的 EXISTS 运算符为我们提供了一种基于其他数据是否存在(或不存在)来检索数据的简便方法。更具体地说,它是一个逻辑运算符,用于评估子查询的结果,并返回一个布尔值,该值指示是否返回了行。尽管 …

《用comfyUI挑战全网AI图片产品实践案例》之comfyUI抠图工作流,用免费打败收费,实现素材自由

近段时间AI非常的火。目前有很多软件已经拥抱了AI,加入了AI的一些功能。像AI绘画的功能,基本上是每个大厂的软件产品都会配备。但是呢,这些功能都是要付费的。而且是按月收费或者是按年收费。整体算下来十分的不划算。所以我尝试用stable dif…

基础岛 第3关 :浦语提示词工程实践

作业 基础任务 (完成此任务即完成闯关) 背景问题&#xff1a;近期相关研究发现&#xff0c;LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题&#xff0c;例如认为13.8<13.11。 任务要求&#xff1a;利用…

嵌入式面试——FreeRTOS篇(五) 事件标志组

本篇为&#xff1a;FreeRTOS事件标志组篇 1、事件标志组介绍 答&#xff1a; 事件标志位&#xff1a;用一个位&#xff0c;来表示事件是否发生。 事件标志组是一组事件标志位的合集&#xff0c;可以简单的理解事件标志组&#xff0c;就是一个整数。 2、事件标志组的特点 答&am…

R包:APAlyzer从RNA-seq数据计算APA表达丰度

文章目录 介绍教程实战案例数据脚本运行 介绍 今天安利APAlyzer工具&#xff0c;它是通过RNA-seq数据获取3′UTR APA, intronic APA等表达谱的R包。 APAlyzer将bam文件比对到PolyA-DB数据库识别APA。 Most eukaryotic genes produce alternative polyadenylation (APA) isofo…

App推广新利器:Xinstall带你直达指定页面

在移动互联网时代&#xff0c;App的推广与运营对于企业的发展至关重要。然而&#xff0c;如何让用户在推广过程中更便捷地访问到App内的指定页面&#xff0c;一直是困扰开发者和运营者的难题。今天&#xff0c;我们就来介绍一款名为Xinstall的SDK&#xff0c;它能帮助你轻松实现…

Python中10个让你代码更安全的网络请求处理技巧

对Python感兴趣&#xff0c;想要有更深入了解的朋友可以试试我的这份学习方法和资料&#xff0c;​​​​​点这里免费获取 引言 在 Python 网络编程中&#xff0c;使用 requests 库进行 HTTP 请求是一种常见且高效的方式。该库不仅提供了简洁易用的 API&#xff0c;还支持多…

3分钟理清QPS、TPS、RT 以及它们之间的关系

在评估系统性能的时候&#xff0c;我们经常会听到 QPS、TPS、RT、吞吐量等等一些概念&#xff0c;包括在一些面试场景下可能也会遇到这些概念&#xff0c;我们来稍微梳理一下。 做一个简单的概念扫盲。 一 QPS QPS&#xff08;Queries Per Second&#xff09; 是每秒的查询率…

上市四天暴涨又暴跌,扫描全能王背后公司坐上“过山车”

股价四天涨五倍&#xff0c;遇到回调跌一半&#xff0c;扫描全能王母公司——合合信息&#xff0c;一上市就坐上了“过山车”。 合合信息其实早在2021年就向科创板申请上市&#xff0c;并在2023年成功过会&#xff0c;但直到9月13日才开启申购&#xff0c;IPO之路一走就是三年…

使用DBeaver(通用数据库管理工具)连接人大金仓数据库

下载安装DBeaver 下载地址&#xff1a; Download | DBeaver Community 官方甚至提供了&#xff08;解压即可用的&#xff09;免安装绿色版 3、下载人大金仓数据库的JDBC驱动 下载地址&#xff1a;电科金仓-成为世界卓越的数据库产品与服务提供商 数据库驱动管理 创建新驱动 配…

【Vue3 + TS + Vite】从0到1搭建项目框架

前言 没搭建过Vue3的项目&#xff0c;从0开始搭建一下&#xff0c;记录一下自己的步骤。 技术栈&#xff1a; vue3 ts scss pinia vite 我尽量写的详细一些&#xff0c;后续也会记录我在项目过程中&#xff0c;遇到的一些问题。 文章目录 前言环境搭建一、创建项目1. 使用…

JUC-线程池

阻塞队列 概述和架构 分类和核心方法 这里是在讲 为了区分在不同场景下 调用的不同组实现方法 核心方法演示 package com.example.juc.queue;import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Tim…

数据结构哈夫曼树-哈夫曼树代码构造实现(C语言)

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdlib.h> #include<stdio.h> #define N 30 //叶子结点的最大值 #define M 2*N-1 // 结点总数 typedef struct HTNode {int weight;int parent;int Lchild;int Rchild;int flag; }HTNode,HuffmanTree[M1];//Huffman…

2024年腾讯外包面试题(微创公司)

笔试&#xff1a; 1、判断异步执行顺序console.log(1);setTimeout(()>{Promise.resolve().then(()>{console.log(2);})console.log(3);},0);new Promise ((resolve)>{for(let i0; i<1000;i ){if(i1000){resolve();}}console.log(4);}).then(()>{console.log(5);…