
Quiero crear una aplicación, que está ubicada en la carpeta% localappdata% (en un subcampo de la misma), para que se ejecute al iniciar Windows, cuando esté instalada para el usuario. Puedo hacerlo si creo un valor de cadena debajo de la clave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
y lo configuro en C:\Users\my_user\AppData\Local\programs\My_App\My_App.exe" --app_id=12346
.
Sin embargo, no quiero incluir una referencia directa a mi usuario. Así que intenté, en lugar de ponerlo C:\Users\my_user\AppData\Local
, usarlo %localappdata%
en el valor de cadena, para que parezca %localappdata%\programs\My_App\My_App.exe" --app_id=12346
.
Sin embargo, usar la referencia de datos de la aplicación local no funciona: la aplicación no se inicia. Me pregunto si hay alguna forma de utilizar una referencia a %LocalAppData% dentro de una clave de registro. ¿Tal vez tengo un error de sintaxis?
¿Podrías ayudarme con eso?
Ya pensé en crear un archivo bat para llamar a mi aplicación y colocarlo en C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
, pero se ejecutaría para todos los usuarios y no puedo garantizar que todos los usuarios tengan mi aplicación instalada. Entonces esa no sería una buena elección.
Respuesta1
Nombres %AppData%
y %LocalAppData%
contienen la palabra "Datos", lo que le da una pista de que estos directorios debennoutilizarse para almacenar archivos ejecutables. Por favor no hagas eso.
Cambiaría el diseño de todo.
Coloque la aplicación en la ubicación estándar para aplicaciones:
- si tiene instalador, utilice
%ProgramFiles%\My_App\
o%ProgramFiles(x86)%\My_App\
- si vienesin instalador, yo usaría algo como
C:\Tools\My_App\
- si tiene instalador, utilice
Inserte entradas de ejecución automática en el subárbol del Registro HKCU (para usuario individual) o en el subárbol HKLM (para máquina local = todos los usuarios)
Cuando se inicia la aplicación, tiene acceso completo al nombre del usuario, las rutas de todos los directorios de usuarios, etc.comience a hacer sus cosas dependientes del usuario solo después de que se haya iniciado la aplicación.De esta manera ya no dependes de la ubicación del archivo EXE o magia similar.
Respuesta2
Windows 10 comprende %LocalAppData%
sus entradas de registro Run
y RunOnce
: las estoy usando con éxito en un GPO.
No olvide asegurarse de que, si la ruta ejecutable puede contener espacios, las comillas dobles vayan en ambos extremos de la cadena. (Aunque esto es cuatro años demasiado tarde para usted, una razón tal vez por la que su intento no funcionó es que lo que nos mostró tiene solo una comilla doble en lugar de un par).