Si ejecuto set PATH=%PATH%;C:\\Something\\bin
desde la línea de comando ( cmd.exe
) y luego ejecuto echo %PATH%
, veo esta cadena agregada a la RUTA. Si cierro y abro la línea de comando, esa nueva cadena no está en PATH.
¿Cómo puedo actualizar PATH permanentemente desde la línea de comando para todos los procesos en el futuro, no solo para el proceso actual?
No quiero hacer esto yendo a Propiedades del sistema → Avanzado → Variables de entorno y actualice PATH allí.
Este comando debe ejecutarse desde una aplicación Java (consulte mi otra pregunta ).
Runtime.getRuntime().exec("my command");
Respuestas:
La documentación sobre cómo hacer esto se puede encontrar en MSDN . El extracto clave es este:
Tenga en cuenta que su aplicación necesitará derechos de administrador elevados para poder modificar esta clave.
En los comentarios, indica que le gustaría modificar solo el entorno por usuario. Haga esto editando los valores en HKEY_CURRENT_USER \ Environment . Como antes, asegúrese de transmitir un
WM_SETTINGCHANGE
mensaje.Debería poder hacer esto desde su aplicación Java con bastante facilidad utilizando las clases de registro JNI.
fuente
HKEY_CURRENT_USER\Environment
para evitar el requisito de elevación.requestedExecutionLevel
arequireAdministrator
en el manifiesto de la aplicación.Puedes usar:
Sin embargo,
setx
truncará la cadena almacenada a 1024 bytes, lo que podría dañar la RUTA./M
cambiará elPATH
en enHKEY_LOCAL_MACHINE
lugar deHKEY_CURRENT_USER
. En otras palabras, una variable del sistema, en lugar del usuario. Por ejemplo:Tienes que tener en cuenta que el nuevo PATH no es visible en tu actual
cmd.exe
.Pero si miras en el registro o en una nueva
cmd.exe
con"set p"
puedes ver el nuevo valor.fuente
setx
para cambiar la ruta de la máquina en lugar de la ruta del usuario?/m
al final del comando, en Windows XP y 7. Sin embargo, no lo he probado.setx
comando "La opción predeterminada no se permite más de '2' veces" ¿Cómo omitirla?Advierto contra el uso del comando
para modificar la variable PATH debido a una "característica" de su implementación. En muchas instalaciones (¿la mayoría?) De estos días, la variable será larga:
setx
truncará la cadena almacenada a 1024 bytes, lo que podría dañar la RUTA (ver la discusión aquí ).( Me inscribí específicamente para señalar este problema, por lo que no tengo la reputación del sitio para comentar directamente la respuesta publicada el 2 de mayo de 2012. Mi agradecimiento a beresfordt por agregar tal comentario )
fuente
Este script de Python [*] hace exactamente eso:
A continuación se muestran algunos ejemplos de uso, suponiendo que se haya guardado en un archivo llamado
setenv.py
en algún lugar de su ruta actual. Tenga en cuenta que en estos ejemplos no tenía derechos de administrador , por lo que los cambios afectaron solo al árbol de registro de mi usuario local:[*] Adaptado de: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
fuente
Como referencia, para cualquiera que busque cómo cambiar la ruta a través del código, estoy citando una publicación útil de un programador de Delphi de esta página web: http://www.tek-tips.com/viewthread.cfm?qid=686382
fuente
En una red corporativa, donde el usuario solo tiene acceso limitado y usa aplicaciones portátiles, existen estos trucos de línea de comando:
reg query "HKEY_CURRENT_USER\Environment"
. Utilizar"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
para LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. ÚseloREG_EXPAND_SZ
para rutas que contengan otras %% variables.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.fuente
Este script http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
incluye todas las llamadas a la API de Windows necesarias que se pueden refactorizar para sus necesidades. En realidad, es una GUI de AutoHotkey para cambiar fácilmente la RUTA del sistema. Debe ejecutarse como administrador.
fuente