使用Java修改Windows注册表,使用最基本的就是cmd命令。
事例和运行结果如下所示:
1 package day01; 2 3 import java.io.IOException; 4 /* 5 1,reg add 将新的子项或项添加到注册表中 6 语法:reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f] 7 参数 8 KeyName 9 指定子项的完全路径。对于远程计算机,请在\\ComputerName\PathToSubkey中的子项路径前包含计算机名称。忽略ComputerName会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为HKLM、HKCU、HKCR、HKU以及HKCC。远程机器上只有 HKLM 和 HKU。 10 值 说明 11 HKCR: HKEY_CLASSES_ROOT 12 HKCU: HKEY_CURRENT_USER 13 HKLM: HKEY_LOCAL_MACHINE 14 HKU: HKEY_USERS 15 HKCC: HKEY_CURRENT_CONFIG 16 17 /v EntryName 18 指定要添加到指定子项下的项名称。 19 /ve 20 指定添加到注册表中的项为空值。 21 /t DataType 22 指定项值的数据类型。DataType可以是以下几种类型: 23 REG_SZ 24 REG_MULTI_SZ 25 REG_DWORD_BIG_ENDIAN 26 REG_DWORD 27 REG_BINARY 28 REG_DWORD_LITTLE_ENDIAN 29 REG_LINK 30 REG_FULL_RESOURCE_DESCRIPTOR 31 REG_EXPAND_SZ 32 33 /s separator 34 指定用于分隔多个数据实例的字符。当REG_MULTI_SZ指定为数据类型且需要列出多个项时,请使用该参数。如果没有指定,将使用默认分隔符为"\0"。 35 /d value 36 指定新注册表项的值。 37 /f 38 不用询问信息而直接添加子项或项。 39 /? 40 在命令提示符显示帮助。 41 42 注释 43 该操作不能添加子树。该版本的Reg在添加子项时无需请求确认。 44 下表列出了reg add操作的返回值。值说明 45 0成功 46 1失败 47 */ 48 public class Test00 { 49 /** 50 * Reg 参数说明 51 * /v 所选项之下要添加或删除的值名 52 * /t RegKey 数据类型(reg_sz字符串) 53 * /d 要分配给添加的注册表 ValueName 的数据 54 * /f 不用提示就强行删除 55 */ 56 public static void changeStart(boolean isStartAtLogon) throws IOException{ 57 String regKey = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; 58 String myAppName = "mgtest"; 59 String exePath = "\"D:\\Program Files (x86)\\love\\HelloWorld.exe\""; 60 Runtime.getRuntime().exec("reg "+(isStartAtLogon?"add ":"delete "+regKey+" /v "+myAppName+(isStartAtLogon?" /t reg_sz /d "+exePath:" /f")); 61 } 62 63 public static void main(String[] args) throws IOException { 64 try { 65 changeStart(true); 66 } catch (IOException e) { 67 //changeStart(false); 68 e.printStackTrace(); 69 } 70 } 71 72 }
Tale、车车