
Я хочу сделать приложение, которое находится в папке %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%
в значении String, так что это выглядит как %localappdata%\programs\My_App\My_App.exe" --app_id=12346
.
Однако использование ссылки Local App Data не работает - приложение не запускается. Интересно, есть ли способ использовать ссылку на %LocalAppData% внутри ключа реестра - может быть, у меня синтаксическая ошибка?
Не могли бы вы мне помочь?
Я уже думал о создании bat-файла для вызова моего приложения и поместить его в C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
, но он будет работать для всех пользователей, а я не могу гарантировать, что у всех пользователей будет установлено мое приложение. Так что это не будет хорошим выбором.
решение1
Имена %AppData%
и %LocalAppData%
содержат слово «Данные», что дает вам подсказку о том, что эти каталоги должнынетиспользоваться для хранения исполняемых файлов. Пожалуйста, не делайте этого.
Я бы изменил весь дизайн.
Поместите приложение в стандартное место для приложений:
- если у него есть установщик, используйте
%ProgramFiles%\My_App\
или%ProgramFiles(x86)%\My_App\
- если это придетбез установщика, я бы использовал что-то вроде
C:\Tools\My_App\
- если у него есть установщик, используйте
Вставьте записи автозапуска либо в поддерево реестра HKCU (для отдельного пользователя), либо в поддерево HKLM (для локальной машины = все пользователи)
Когда приложение запущено, оно имеет полный доступ к имени пользователя, путям всех каталогов пользователя и т. д. Таким образомначинайте выполнять пользовательские действия только после запуска приложения.Таким образом, вы больше не зависите от местоположения EXE-файла или подобной магии.
решение2
Windows 10 понимает %LocalAppData%
это в Run
записях RunOnce
реестра - я успешно использую их в GPO.
Не забудьте убедиться, что если путь к исполняемому файлу может содержать пробелы, то двойные кавычки должны располагаться на обоих концах строки. (Хотя для вас это опоздало на четыре года, одной из причин, по которой ваша попытка не сработала, может быть то, что то, что вы нам показали, содержит только одну двойную кавычку вместо пары.)