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(); } } }
看完打开支付宝扫一扫领个红包吧!