Avevo bisogno di aggiungere una nuova voce alla mia variabile PATH. Questa è un'attività comune per me nel mio lavoro, ma di recente ho iniziato a utilizzare Windows 8. Ho pensato che il processo sarebbe stato simile a Windows 7, Vista, XP ...
Ecco la mia sequenza di eventi:
- Apri Proprietà di sistema (Start-> [tipo "Pannello di controllo"] -> Pannello di controllo \ Sistema e sicurezza \ Sistema -> Impostazioni di sistema avanzate -> Variabili d'ambiente)
- Aggiungi il nuovo percorso all'inizio della mia variabile USER PATH (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Aperto un prompt dei comandi (Start -> [digitare "prompt dei comandi" invio] -> [digitare "percorso" invio]
La mia nuova voce di percorso non è disponibile (vedi immagine e video allegati). Ho duplicato lo stesso identico processo su un computer Windows 7 e ha funzionato.
MODIFICARE
Variabili d'ambiente di Windows 8 e video del prompt dei comandi
MODIFICARE
Questo non è sicuramente il comportamento di Windows 7. Guarda questo video per vedere il comportamento che mi aspetto che funzioni in Windows 7. http://youtu.be/95JXY5X0fII
MODIFICA 31/05/2013
Quindi, dopo molta frustrazione, ho scritto una piccola app C # per testare l' WM_SETTINGCHANGE
evento. Questo codice riceve l'evento in Windows 7 e Windows 8. Tuttavia, in Windows 8 sul mio sistema, non ottengo il percorso corretto; ma lo faccio in Windows 7. Questo non può essere riprodotto in altri sistemi Windows 8.
Ecco il codice 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
è equivalente a WM_SETTINGCHANGE
Programma C # in esecuzione in Windows 7 (puoi vedere l'evento che si verifica e raccoglie il percorso corretto).
Programma C # in esecuzione in Windows 8 (puoi vedere l'evento che si verifica, ma il percorso sbagliato).
C'è qualcosa nel mio ambiente che sta precipitando questo problema. Tuttavia, si tratta di un bug di Windows 8?
MODIFICA 2014-04-28
A causa di questo e di molti altri problemi, non utilizziamo più Windows 8 sul desktop. Non abbiamo un ambiente per continuare a testare e sperimentare questo problema. Non esiste ancora una risposta o una soluzione a questo problema per noi. Le risposte di seguito non hanno risolto il nostro problema.
cmd
quando è stata lanciata una nuova istanza. Naturalmente il già in esecuzione cmd
non ha ottenuto l'ambiente aggiornato.