java - 如何在 Java 中以编程方式将 Java 桌面应用程序添加/删除到 Windows 启动?

标签 java windows java-native-interface startup

我有一个用 Java 编写的 Windows 桌面应用程序。我有一个复选框,上面写着“在系统启动时启动”。因此,如果选中此复选框,那么我希望应用程序在用户登录 Windows 时启动。如果它没有被选中,那么我想删除它(如果它已经存在)。

而且我想使用 Java 从我的应用程序中执行此操作(我知道还有一些其他方法,例如批处理文件和 Windows 服务)。

我检查了Stack Overflow代码,但没有用。其实我只想要一个像Code Project这样的解决方案.

但不幸的是它在 C# .net 中。那么我如何使用 Java 实现这一目标呢?

编辑:我也对 JNA/JNI 方法持开放态度。问题是我只需要用 Java 来做。不管我用什么都没关系。我已准备好参加 JNA/JNI。

最佳答案

另一个比 COM 解决方案简单得多的选项是将文件添加/删除到 Windows 启动文件夹之一。你可以这样做:

    String allUsersStartupFolder = "C:/ProgramData/Microsoft/Windows/Start Menu/Programs/Startup";
    //String personalStartupFolder = "C:/Users/" + System.getProperty("user.name") + "/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup";

    File startupFolder = new File(allUsersStartupFolder);
    System.out.println(startupFolder);
    File startupFile = new File(startupFolder, "MyProgramStartup.bat");

    if(startupFile.exists()){
        System.out.println("Unregister");
        startupFile.delete();
    }else{
        System.out.println("Register");
        Files.write(startupFile.toPath(), "java -jar MyProgram.jar".getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
    }

关于java - 如何在 Java 中以编程方式将 Java 桌面应用程序添加/删除到 Windows 启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658712/

相关文章:

java - 尝试从 Java 运行 Github CLI 命令 gh auth login --with-token 时出现问题

Android - JNI NewObject() 在将其传递给 Java 时不保存值

java - 图像的错误 URL 编码

c++ - 关闭应用程序而不显示控制台窗口

Java 数组[i]++ 与++数组[i]

c++ - 涉及 LPWSTR 的这个 typedef 意味着什么?

android - 为什么 Android jvm->GetEnv() 会为多个线程返回相同的 "env"。?

java - 是否可以在 visual studio 中调试 JNI DLL?

java - JsonParseException 反序列化对象失败

java - JPanel 未显示