在 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%其注册表RunRunOnce- 我在 GPO 中成功使用它们。

如果可执行路径可能包含空格,请不要忘记确保双引号位于字符串的两端。(虽然这对您来说已经晚了四年,但您自己的尝试没有奏效的原因之一可能是您向我们展示的内容只有一个双引号,而不是一对。)

相关内容