Como você adiciona uma variável de ambiente do Windows sem reinicializar?

163

Eu gostaria de adicionar uma variável Environment a uma máquina Windows (desktop ou servidor) e ser capaz de usá-la sem reiniciar a máquina.

Digamos que você tenha um servidor de produção que hospede uma variedade de aplicativos e um novo aplicativo precise de uma determinada variável de ambiente para ser executada. Você não deseja reinicializá-lo enquanto os usuários estiverem conectados a seus outros aplicativos. Quais escolhas você tem? Eu não gosto da opção de esperar até uma boa hora de reiniciar. Deve haver um caminho melhor. O que estou perdendo?

    
por Chad Braun-Duin 16.05.2009 / 06:09

6 respostas

152

As alterações nas variáveis de ambiente devem entrar em vigor imediatamente, se você fizer a alteração através da caixa de diálogo Propriedades principal do computador em questão (vá para Meu computador | Propriedades | Avançadas | Variáveis de ambiente). Depois que as alterações são salvas, o Explorer transmite uma mensagem WM_SETTINGCHANGE para todas as janelas para informar sobre a alteração. Quaisquer programas gerados pelo Explorer depois disso devem obter o ambiente atualizado, embora os programas já em execução não funcionem, a menos que eles manipulem a mensagem de mudança de configuração.

Não consigo dizer, na descrição do seu problema, qual é o problema específico que você está tendo com isso. Você pode nos contar mais sobre o cenário específico que não está funcionando?

Este artigo da KB também pode ser útil: Como propagar variáveis de ambiente para o sistema

    
por 16.05.2009 / 06:16
55
  1. Em um prompt de comando, digite: runas /user:yourusername@yourdomain cmd
  2. Ele abrirá um novo prompt de cmd e digitará: %código%
  3. Em seguida, digite: taskkill /f /im explorer.exe

Agora, depois de fechar todos os prompts de comando, você verá que a variável explorer.exe foi realmente atualizada.

Todos os prompts de comando devem ser fechados. Reabrir um novo prompt de comando, digite o caminho e você verá os novos dados.

    
por 20.03.2013 / 07:36
16

Uma coisa a ter em mente é que muitos programas obtêm as variáveis ambientais quando são iniciadas, portanto, embora o Windows possa não precisar ser reiniciado, alguns programas podem antes de poder usar as novas variáveis. Um bom exemplo disso é ter que abrir uma nova janela de prompt de comando depois de adicionar um PATH (sim, eu fui enganado por isso).

    
por 16.05.2009 / 08:11
12

Embora eu não tenha reputação suficiente para comentar sobre a resposta mais votada a esta questão, gostaria de declarar que não é exatamente correto. Eu sei disso porque não importa qual solução alternativa eu tentei neste post, nada realmente funcionou.

O artigo kb vinculado nessa resposta , na verdade, afirma que:

However, note that modifications to the environment variables do not result in immediate change. For example, if you start another Command Prompt after making the changes, the environment variables will reflect the previous (not the current) values. The changes do not take effect until you log off and then log back on.

A parte sobre as variáveis de ambiente redefinidas para os valores anteriores depois de recarregar o prompt de comando é exatamente o que eu experimentei no Windows Server 2008.

O artigo continua:

To effect these changes without having to log off, broadcast a WM_SETTINGCHANGE message to all windows in the system, so that any interested applications (such as Windows Explorer, Program Manager, Task Manager, Control Panel, and so forth) can perform an update.

Isso não implica que o Explorer transmita uma mensagem WM_SETTINGCHANGE uma vez que você tenha alterado as variáveis de ambiente do sistema, ou que ele realmente funcione. Não sei como você faria o que é sugerido no artigo da base de conhecimento (para propagar as alterações imediatamente) no prompt de comando.

    
por 26.11.2013 / 23:30
4

Faça o env. variável disponível imediatamente:

1. Open a shell

Dependendo da variável de ambiente que você deseja alterar, faça o seguinte:    (Suponha que você deseja adicionar um novo PATH para um aplicativo instalado recentemente) Portanto, no prompt do shell, digite o seguinte:

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

verifique se o seu novo caminho foi adicionado à variável de ambiente

3. echo %PATH%

Feito.

Tornar a variável disponível na reinicialização

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

Testado e trabalhando no Windows 7/10

    
por 18.11.2015 / 18:00
3

Uma possível solução para serviços é executá-los temporariamente como outro usuário (diferente de LocalSystem, LocalService, NetworkService). Por exemplo, para o serviço Apache, isso funciona sem problemas. Para alterar a conta de serviço, abra o console services.msc, selecione o serviço, clique em propriedades do serviço e, na segunda guia, insira credenciais de logon para um usuário. Reinicie o serviço e suas variáveis de ambiente devem estar atualizadas.

Se este é um usuário que foi registrado do que isso deve funcionar sem problemas. Se você estiver usando a conta de usuário atual, reinicie o explorer.exe também pode ser necessário. Observe também que a execução de serviços como uma conta de usuário normal pode criar riscos de segurança.

    
por 09.08.2010 / 22:26