標籤:
使用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(); } } }
Java 修改Windows註冊表,以實現開機自啟動應用程式。