你的位置:首页 > Java教程

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


使用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();    }   }  }