Necesitaba agregar una nueva entrada a mi variable PATH. Esta es una actividad común para mí en mi trabajo, pero recientemente comencé a usar Windows 8. Asumí que el proceso sería similar a Windows 7, Vista, XP ...
Aquí está mi secuencia de eventos:
- Abra las propiedades del sistema (Inicio-> [escriba "Panel de control"] -> Panel de control \ Sistema y seguridad \ Sistema -> Configuración avanzada del sistema -> Variables de entorno)
- Agregar la nueva ruta al comienzo de mi variable USER PATH (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Abrió un símbolo del sistema (Inicio -> [escriba "símbolo del sistema" enter] -> [escriba "ruta" enter]
Mi nueva entrada de ruta no está disponible (ver imagen adjunta y video). Dupliqué exactamente el mismo proceso en una máquina con Windows 7 y funcionó.
EDITAR
Video de variables de entorno de Windows 8 y símbolo del sistema
EDITAR
Este definitivamente no es el comportamiento de Windows 7. Mire este video para ver el comportamiento que espero que funcione en Windows 7. http://youtu.be/95JXY5X0fII
EDITAR 31/05/2013
Entonces, después de mucha frustración, escribí una pequeña aplicación C # para probar el WM_SETTINGCHANGE
evento. Este código recibe el evento tanto en Windows 7 como en Windows 8. Sin embargo, en Windows 8 en mi sistema, no obtengo la ruta correcta; pero lo hago en Windows 7. Esto no se pudo reproducir en otros sistemas Windows 8.
Aquí está el código C #.
using System;
using Microsoft.Win32;
public sealed class App
{
static void Main()
{
SystemEvents.UserPreferenceChanging += new UserPreferenceChangingEventHandler(OnUserPreferenceChanging);
Console.WriteLine("Waiting for system events.");
Console.WriteLine("Press <Enter> to exit.");
Console.ReadLine();
}
static void OnUserPreferenceChanging(object sender, UserPreferenceChangingEventArgs e)
{
Console.WriteLine("The user preference is changing. Category={0}", e.Category);
Console.WriteLine("path={0}", System.Environment.GetEnvironmentVariable("PATH"));
}
}
OnUserPreferenceChanging
es equivalente a WM_SETTINGCHANGE
Programa C # que se ejecuta en Windows 7 (puede ver cómo se produce el evento y selecciona la ruta correcta).
Programa C # que se ejecuta en Windows 8 (puede ver el evento, pero la ruta incorrecta).
Hay algo en mi entorno que está precipitando este problema. Sin embargo, ¿ es esto un error de Windows 8?
EDITAR 28/04/2014
Debido a este y otros problemas, ya no usamos Windows 8 en el escritorio. No tenemos un entorno para continuar probando y experimentando con este problema. Todavía no hay respuesta o resolución para este problema para nosotros. Las respuestas a continuación no resolvieron nuestro problema.
cmd
cuando se lanzaba una nueva instancia. Por supuesto, el que ya se está ejecutandocmd
no obtuvo el entorno actualizado.Respuestas:
Si está iniciando el símbolo del sistema desde el menú de inicio o un acceso directo en su barra de tareas, debe:
explorer
. Mátalo y relancéalo.explorer
).explorer
).El entorno no se actualiza inmediatamente porque los entornos se heredan de su proceso principal, con la excepción de
explorer
, que el sistema inicia al iniciar sesión. Así es como se comporta en mi sistema Windows 7.Por lo tanto, cambiar las Variables de entorno actualiza las claves de registro, pero estas claves no se vuelven a leer hasta que el sistema tiene que crear un nuevo entorno de inicio de sesión para algún proceso que se inicie. La mayoría de las veces, esto no sucede porque los procesos son hijos de un proceso que ya tiene un entorno, por lo que el entorno se hereda.
fuente
WM_SETTINGCHANGE
mensaje.De: http://support.microsoft.com/kb/104011 a través de /server//q/8855/158027
fuente
El problema es con su configuración de usuario. En la Ventana 8, cada usuario tiene sus propias variables de entorno.
El enfoque anterior editará las variables de entorno para el usuario raíz, tal vez no para su usuario actual.
Debe ir a la cuenta de usuario -> seleccione su cuenta actual -> cambiar variables de entorno
Después de cambiar, reinicie el shell de energía. Luego
o
Espero que esto te ayudará.
fuente
Prueba SETX en su lugar SET. P.ej
SETX PATH "%PATH%;MyPath"
fuente
SETX
lugar deSET
trabajar?Si está utilizando Windows 8.1, abra el símbolo del sistema como Administrador, luego llame al comando PATH y verá que aparece allí. Cuando regrese a cmd normal, también aparecerá. Y, de hecho, debería poder iniciar la aplicación agregada desde el símbolo del sistema.
fuente
Tarde a la suya. Sin embargo. Puede ser víctima de este problema: las variables de usuario no se resuelven correctamente en Windows .
fuente
¿Funciona si usa Win + R desde el escritorio para iniciar cmd.exe? Supongo que iniciarlo desde la pantalla de inicio hace que el padre cmd.exe iniciado sea diferente de explorer.exe (WSAHost.exe, IIRC o como se llame), y ese proceso padre no actualiza su entorno durante los mensajes WM_SETTINGCHANGE. No tengo una máquina con Windows 8 a mano para probar ...
fuente