在 Windows 啟動時從「LocalAppData」執行應用程式

在 Windows 啟動時從「LocalAppData」執行應用程式

我想製作一個位於 %localappdata% 資料夾(在它的子資料夾中)的應用程序,在為用戶安裝時在 Windows 啟動時運行。如果我在該鍵下創建一個字串值HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run並將其設置為,我就可以做到這一點C:\Users\my_user\AppData\Local\programs\My_App\My_App.exe" --app_id=12346

但是,我不想在其中直接引用我的用戶。所以我嘗試在字串值中C:\Users\my_user\AppData\Local使用,而不是放入 ,所以它看起來像.%localappdata%%localappdata%\programs\My_App\My_App.exe" --app_id=12346

但是,使用本機應用程式資料引用不起作用 - 應用程式無法啟動。我想知道是否有一種方法可以在註冊表項內使用對 %LocalAppData% 的引用 - 也許我有語法錯誤?

你能幫我嗎?

我已經考慮過創建一個bat檔案來調用我的應用程序,並將其放入C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup,但它會為所有用戶運行,並且我不能保證所有用戶都會安裝我的應用程式。所以這不會是個好的選擇。

答案1

名稱%AppData%%LocalAppData%包含單字“Data”,提示您這些目錄應該不是用於儲存可執行檔。請不要這樣做。

我會改變整個東西的設計。

  1. 將應用程式放入應用程式的標準位置:

    • 如果它有安裝程序,請使用%ProgramFiles%\My_App\%ProgramFiles(x86)%\My_App\
    • 如果它來了沒有安裝程式,我會用類似的東西C:\Tools\My_App\
  2. 將自動執行條目插入 HKCU 登錄子樹(針對個人使用者)​​或 HKLM 子樹(適用於本機電腦 = 所有使用者)

  3. 當應用程式啟動時,它具有對使用者名稱、所有使用者目錄的路徑等的完全存取權。僅在應用程式啟動後才開始執行與使用者相關的操作。這樣您就不再依賴 EXE 檔案的位置或類似的魔法。

答案2

Windows 10 可以理解%LocalAppData%其登錄Run項目RunOnce- 我在 GPO 中成功使用它們。

不要忘記確保如果可執行路徑可能包含空格,則雙引號會出現在字串的兩端。 (儘管這對您來說已經晚了四年,但您自己的嘗試失敗的一個原因可能是您向我們展示的內容只有一個雙引號而不是一對。)

相關內容