
Quero fazer um aplicativo, que está localizado na pasta% localappdata% (em uma subpasta dela), para rodar na inicialização do Windows, quando for instalado para o usuário. Posso fazer isso se criar um valor de string na chave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
e defini-lo como C:\Users\my_user\AppData\Local\programs\My_App\My_App.exe" --app_id=12346
.
No entanto, não quero colocar uma referência direta ao meu usuário. Então tentei, ao invés de colocar C:\Users\my_user\AppData\Local
, usar %localappdata%
no valor da String, para que fique assim %localappdata%\programs\My_App\My_App.exe" --app_id=12346
.
No entanto, usar a referência de dados de aplicativos locais não funciona - o aplicativo não inicia. Gostaria de saber se existe uma maneira de usar uma referência a% LocalAppData% dentro de uma chave de registro - talvez eu tenha um erro de sintaxe?
Você poderia me ajudar com isso?
Já pensei em criar um arquivo bat para chamar meu aplicativo e colocá-lo em C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
, mas ele seria executado para todos os usuários e não posso garantir que todos os usuários terão meu aplicativo instalado. Então essa não seria uma boa escolha.
Responder1
Nomes %AppData%
e %LocalAppData%
contêm a palavra "Dados", dando a dica de que esses diretórios devemnãoser usado para armazenar arquivos executáveis. Por favor, não faça isso.
Eu mudaria o design de tudo.
Coloque o aplicativo em local padrão para aplicativos:
- se tiver instalador, use
%ProgramFiles%\My_App\
ou%ProgramFiles(x86)%\My_App\
- se viersem instalador, eu usaria algo como
C:\Tools\My_App\
- se tiver instalador, use
Insira entradas de execução automática na subárvore do Registro HKCU (para usuário individual) ou na subárvore HKLM (para máquina local = todos os usuários)
Quando o aplicativo é iniciado, ele tem acesso total ao nome do usuário, caminhos de todos os diretórios de usuários, etc.comece a fazer as coisas que dependem do usuário somente depois que o aplicativo for iniciado.Dessa forma, você não depende mais da localização do arquivo EXE ou de magia semelhante.
Responder2
O Windows 10 entende %LocalAppData%
suas Run
entradas RunOnce
de registro - estou usando-as com sucesso em um GPO.
Não se esqueça de garantir que, se o caminho do executável contiver espaços, as aspas duplas vão em ambas as extremidades da string. (Embora seja quatro anos tarde demais para você, talvez um dos motivos pelos quais sua tentativa não funcionou é que o que você nos mostrou tem apenas aspas duplas em vez de um par.)