app.jar,配合獨立 JRE 目錄運行。start java\jre\bin\javaw -jar app.jar 雙擊正常。Run 鍵實現開機自啟動時,程序工作目錄變為 C:\Windows\System32,導致相對路徑失效。註冊表啟動進程的默認工作目錄是系統目錄,而非腳本所在目錄。System.getProperty("user.dir") 返回的就是這個錯誤路徑。
%~dp0 獲取腳本目錄@echo off
REM %~dp0 表示批處理文件所在的驅動器和路徑(包含結尾反斜槓)
start "" "%~dp0java\jre\bin\javaw" -jar "%~dp0app.jar"
%~dp0:展開為批處理文件的絕對路徑(如 D:\myapp\),已包含尾部反斜槓。start "":空標題參數防止路徑含空格時被誤解析為標題。javaw.exe 和 app.jar 都加上 %~dp0 前綴,確保無論從哪裡啟動都能定位資源。System.getProperty("user.dir")。System32。鍵: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
值名: MyJavaApp
值數據: "D:\myapp\startup.bat" (雙引號包裹路徑)