it-swarm-es.com

¿Cómo se agrega una variable de entorno de Windows sin reiniciar?

Me gustaría agregar una variable de entorno a una máquina con Windows (escritorio o servidor) y poder usarla sin reiniciar esa máquina.

Supongamos que tiene un servidor de producción que aloja una variedad de aplicaciones y una nueva aplicación necesita una variable de entorno particular para ejecutarse. No desea reiniciarlo mientras los usuarios están conectados a sus otras aplicaciones. ¿Qué opciones tienes? No me gusta la opción de esperar hasta un buen momento para reiniciar. Debe haber una mejor manera. ¿Qué me estoy perdiendo?

186
Chad Braun-Duin

Los cambios en las variables de entorno deben tener efecto de inmediato, si realiza el cambio a través del cuadro de diálogo principal de Propiedades para la computadora en cuestión (vaya a Mi PC | Propiedades | Avanzado | Variables de entorno). Después de guardar los cambios, Explorer emite un WM_SETTINGCHANGE mensaje a todas las ventanas para informarles del cambio. Cualquier programa generado a través de Explorer después de esto debería obtener el entorno actualizado, aunque los programas que ya se ejecutan no lo harán, a menos que manejen el mensaje de cambio de configuración.

No puedo decir a partir de la descripción de su problema qué problema específico tiene con esto. ¿Puede contarnos más sobre el escenario específico que no funciona?

Este artículo de KB también puede ser útil: Cómo propagar variables de entorno al sistema

166
Charlie
  1. En un símbolo del sistema, escriba: runas /user:[email protected] cmd
  2. Se abrirá una nueva solicitud de cmd, luego escriba: taskkill /f /im Explorer.exe
  3. Luego escriba: Explorer.exe

Ahora, después de cerrar todas las indicaciones de comando, verá que la variable PATH se ha actualizado realmente.

Todas las indicaciones de comando deben estar cerradas. Vuelva a abrir un nuevo símbolo del sistema, escriba path y verá los nuevos datos.

66
Ron AndKim Stengel

Una cosa a tener en cuenta es que muchos programas obtienen las variables de entorno cuando se inician por primera vez, por lo que si bien es posible que Windows no necesite reiniciarse, es posible que algunos programas lo hagan antes de poder usar las nuevas variables. Un buen ejemplo de esto es tener que abrir una nueva ventana de símbolo del sistema después de agregar una RUTA (sí, me he tropezado con esto).

20
nedm

Si bien no tengo suficiente reputación para comentar sobre la respuesta más votada a esta pregunta, me gustaría decir que no es exactamente correcta. Sé esto porque no importa qué solución probé en esta publicación, nada funcionó realmente.

El artículo de kb vinculado en esa respuesta en realidad establece que:

Sin embargo, tenga en cuenta que las modificaciones a las variables de entorno no resultan en un cambio inmediato. Por ejemplo, si inicia otro símbolo del sistema después de realizar los cambios, las variables de entorno reflejarán los valores anteriores (no los actuales). Los cambios no surten efecto hasta que cierre la sesión y luego vuelva a iniciarla.

La parte sobre el restablecimiento de las variables de entorno a los valores anteriores después de volver a cargar el símbolo del sistema es exactamente lo que experimenté en Windows Server 2008.

El artículo continúa diciendo:

Para efectuar estos cambios sin tener que cerrar sesión, transmita un mensaje WM_SETTINGCHANGE a todas las ventanas del sistema, de modo que cualquier aplicación interesada (como el Explorador de Windows, el Administrador de programas, el Administrador de tareas, el Panel de control, etc.) pueda realizar una actualización.

Eso no implica que Explorer difunda un mensaje WM_SETTINGCHANGE una vez que haya cambiado las variables de entorno del sistema, o que realmente funcione. No estoy seguro de cómo haría lo que se sugiere en el artículo de KB (para propagar los cambios de inmediato) desde el símbolo del sistema.

16
testworks

Haz el env. variable disponible de inmediato:

1. Open a Shell

Dependiendo de la variable de entorno que desee cambiar, haga lo siguiente: (suponga que desea agregar una nueva RUTA para una aplicación instalada recientemente) Entonces, en el Indicador de Shell, escriba lo siguiente:

2. PATH=%PATH%;C:\type\your\new\path\here

verifique que su nueva ruta se haya agregado a la variable de entorno

3. echo %PATH%

Hecho.

Hacer que la variable esté disponible al reiniciar

1. Press WinLogoKey+Pause/Break
2. On the left pane, press 'Advanced System Settings'
3. On the 'Advanced' tab, click 'Environment Variables'
4. In 'System Variables' choose the one you want to modify
5. Click Ok

Probado y trabajando en Windows 7/10

4
Pedro Sousa

Una posible solución para los servicios es ejecutarlos temporalmente como otro usuario (que no sea LocalSystem, LocalService, NetworkService). Por ejemplo, para el servicio Apache, esto funciona sin ningún problema. Para cambiar la cuenta de servicio, abra la consola services.msc, seleccione servicio, haga clic en propiedades del servicio y en la segunda pestaña ingrese las credenciales de inicio de sesión para un usuario. Reinicie el servicio y sus variables de entorno deben estar actualizadas.

Si se trata de un usuario que ha iniciado sesión, debería funcionar sin problemas. Si está utilizando una cuenta de usuario actual, también puede ser necesario reiniciar Explorer.exe. También tenga en cuenta que la ejecución de servicios como cuenta de usuario normal puede crear riesgos de seguridad.

3
Odin

Como la gente aún no ha agregado esta respuesta, quería mencionar que puede establecer variables de sistema permanentes que sobrevivan al reinicio con el comando SETX.

p.ej.

setx PATH "%PATH%;c:\temp\my\new\path"

Tenga en cuenta que lo anterior no funcionará en la ventana de comandos actual y requerirá que abra una nueva ventana de comandos antes de que surta efecto. Como resultado, dependiendo del caso de uso; Es posible que deba combinar esto con una de las otras técnicas anteriores.

Consulte la siguiente URL para obtener detalles adicionales :

1
Doug