Java 修改Windows注册表,以实现开机自启动应用程序。

原文:https://www.cnblogs.com/CentForever/p/4661029.html

 

使用Java修改Windows注册表,使用最基本的就是cmd命令。

事例和运行结果如下所示:

 

package day01;

import java.io.IOException;
/*
 1,reg add 将新的子项或项添加到注册表中 
  语法:reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f] 
  参数 
  KeyName 
  指定子项的完全路径。对于远程计算机,请在\\ComputerName\PathToSubkey中的子项路径前包含计算机名称。忽略ComputerName会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为HKLM、HKCU、HKCR、HKU以及HKCC。远程机器上只有 HKLM 和 HKU。 
  值 说明 
  HKCR: HKEY_CLASSES_ROOT 
  HKCU: HKEY_CURRENT_USER 
  HKLM: HKEY_LOCAL_MACHINE 
  HKU: HKEY_USERS 
  HKCC: HKEY_CURRENT_CONFIG 

  /v EntryName 
  指定要添加到指定子项下的项名称。 
  /ve 
  指定添加到注册表中的项为空值。 
  /t DataType 
  指定项值的数据类型。DataType可以是以下几种类型: 
  REG_SZ 
  REG_MULTI_SZ 
  REG_DWORD_BIG_ENDIAN 
  REG_DWORD 
  REG_BINARY 
  REG_DWORD_LITTLE_ENDIAN 
  REG_LINK 
  REG_FULL_RESOURCE_DESCRIPTOR 
  REG_EXPAND_SZ 

  /s separator 
  指定用于分隔多个数据实例的字符。当REG_MULTI_SZ指定为数据类型且需要列出多个项时,请使用该参数。如果没有指定,将使用默认分隔符为"\0"。 
  /d value 
  指定新注册表项的值。 
  /f 
  不用询问信息而直接添加子项或项。 
  /? 
  在命令提示符显示帮助。 

  注释 
  该操作不能添加子树。该版本的Reg在添加子项时无需请求确认。 
  下表列出了reg add操作的返回值。值说明 
  0成功 
  1失败 
 */
public class Test00 {
     /** 
      * Reg 参数说明 
      * /v       所选项之下要添加或删除的值名 
      * /t       RegKey 数据类型(reg_sz字符串) 
      * /d       要分配给添加的注册表 ValueName 的数据 
      * /f       不用提示就强行删除 
      */  
     public static void changeStart(boolean isStartAtLogon) throws IOException{  
      String regKey = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";  
      String myAppName = "mgtest";  
      String exePath = "\"D:\\Program Files (x86)\\love\\HelloWorld.exe\"";  
      Runtime.getRuntime().exec("reg "+(isStartAtLogon?"add ":"delete ")+regKey+" /v "+myAppName+(isStartAtLogon?" /t reg_sz /d "+exePath:" /f"));  
     }  
       
     public static void main(String[] args) throws IOException {  
           try {
            changeStart(true);
        } catch (IOException e) {
            //changeStart(false);
            e.printStackTrace();
        }
     }  
  
}

 

 

posted @ 2020-08-28 09:50  这个名字想了很久~  阅读(688)  评论(0编辑  收藏  举报