Eu precisava adicionar uma nova entrada à minha variável PATH. Essa é uma atividade comum para mim no meu trabalho, mas recentemente comecei a usar o Windows 8. Presumi que o processo seria semelhante ao Windows 7, Vista, XP ...
Aqui está a minha sequência de eventos:
- Abra Propriedades do sistema (Iniciar-> [tipo "Painel de controle"] -> Painel de controle \ Sistema e segurança \ Sistema -> Configurações avançadas do sistema -> Variáveis de ambiente)
- Adicione o novo caminho ao início da minha variável USER PATH (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Abriu um prompt de comando (Iniciar -> [digite "prompt de comando" digite] -> [digite "caminho" digite]
Minha nova entrada de caminho não está disponível (consulte a imagem e o vídeo em anexo). Dupliquei exatamente o mesmo processo em uma máquina Windows 7 e funcionou.
EDITAR
Vídeo sobre variáveis de ambiente e prompt de comando do Windows 8
EDITAR
Definitivamente, esse não é o comportamento do Windows 7. Assista a este vídeo para ver o comportamento que espero trabalhar no Windows 7. http://youtu.be/95JXY5X0fII
EDIT 31/05/2013
Então, depois de muita frustração, escrevi um pequeno aplicativo C # para testar o WM_SETTINGCHANGE
evento. Esse código recebe o evento no Windows 7 e no Windows 8. No entanto, no Windows 8 do meu sistema, não obtenho o caminho correto; mas eu faço no Windows 7. Isso não pôde ser reproduzido em outros sistemas Windows 8.
Aqui está o 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
é equivalente a WM_SETTINGCHANGE
Programa C # em execução no Windows 7 (você pode ver o evento acontecer e ele escolhe o caminho correto).
Programa C # em execução no Windows 8 (você pode ver o evento acontecer, mas o caminho errado).
Há algo no meu ambiente que está precipitando esse problema. No entanto, isso é um bug do Windows 8?
EDIT 2014-04-28
Devido a esse e vários outros problemas, não usamos mais o Windows 8 na área de trabalho. Não temos um ambiente para continuar testando e experimentando esse problema. Ainda não há resposta ou solução para esse problema. As respostas abaixo não resolveram o nosso problema.
cmd
quando uma nova instância foi lançada. É claro que o já em execuçãocmd
não recebeu o ambiente atualizado.Respostas:
Se você estiver iniciando o prompt de comando no menu Iniciar ou um atalho na barra de tarefas, deverá:
explorer
. Mate-o e reinicie-o.explorer
).explorer
).O ambiente não é atualizado imediatamente porque os ambientes são herdados do processo pai, com exceção de
explorer
, que é iniciado pelo sistema no login. É assim que se comporta no meu sistema Windows 7.Portanto, alterar as variáveis de ambiente atualiza as chaves do registro, mas essas chaves não são relidas até que o sistema precise criar um novo ambiente de login para o início de um processo. Na maioria das vezes, isso não está acontecendo porque os processos são filhos de um processo que já possui um ambiente e, portanto, o ambiente é herdado.
fonte
WM_SETTINGCHANGE
mensagens.De: http://support.microsoft.com/kb/104011 via /server//q/8855/158027
fonte
O problema está na sua configuração do usuário. Na janela 8, cada usuário possui suas próprias variáveis de ambiente.
A abordagem acima editará variáveis de ambiente para o usuário root, talvez não para o usuário atual.
Você deve ir para a conta de usuário -> selecione sua conta atual -> alterar variáveis de ambiente
Após a alteração, reinicie o power shell. Então
ou
Espero que isso ajude você.
fonte
Tente SETX em vez de SET. Por exemplo
SETX PATH "%PATH%;MyPath"
fonte
SETX
vez deSET
funcionar.Se você estiver usando o Windows 8.1, abra o prompt de comando como Administrador, chame o comando PATH e deverá aparecer lá. Quando você voltar ao cmd normal, ele também será exibido. De fato, você deve conseguir iniciar o aplicativo adicionado no prompt de comando.
fonte
Tarde para ele. Contudo. Você pode ser vítima desse problema: As variáveis do usuário não foram resolvidas corretamente no Windows .
fonte
Funciona se você usar o Win + R na área de trabalho para iniciar o cmd.exe? Meu palpite é que iniciá-lo na tela inicial faz com que o pai do cmd.exe seja diferente do explorer.exe (WSAHost.exe, IIRC ou qualquer que seja o nome), e esse processo pai não atualiza seu ambiente durante as mensagens WM_SETTINGCHANGE. Não tenho uma máquina Windows 8 disponível para testar ...
fonte