it-swarm-pt.tech

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

Gostaria de adicionar uma variável de ambiente a uma máquina Windows (desktop ou servidor) e poder 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 variável de ambiente específica para executar. Você não deseja reiniciá-lo enquanto os usuários estiverem conectados aos seus outros aplicativos. Que escolhas você tem? Não gosto da opção esperar até um bom momento para reiniciar. Deve haver uma maneira melhor. o que estou perdendo?

186
Chad Braun-Duin

As alterações nas variáveis ​​de ambiente devem entrar em vigor imediatamente, se você fizer a alteração na caixa de diálogo Propriedades principal do computador em questão (vá para Meu Computador | Propriedades | Avançado | Variáveis ​​de Ambiente). Depois que as alterações são salvas, o Explorer transmite um WM_SETTINGCHANGE mensagem para todas as janelas para informá-los da alteração. Qualquer programa gerado pelo Explorer depois disso deve obter o ambiente atualizado, embora os programas em execução não o façam, a menos que lidem com a mensagem de alteração de configuração.

Não sou capaz de dizer pela descrição do seu problema que problema específico 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

166
Charlie
  1. Em um prompt de comando, digite: runas /user:[email protected] cmd
  2. Ele abrirá um novo prompt de cmd e digite: taskkill /f /im Explorer.exe
  3. Em seguida, digite: Explorer.exe

Agora, após fechar todos os prompts de comando, você verá que a variável PATH foi realmente atualizada.

Todos os prompts de comando devem estar fechados. Reabra um novo prompt de comando, digite path e você verá os novos dados.

66
Ron AndKim Stengel

Um aspecto a ter em mente é que muitos programas obtêm as variáveis ​​ambientais quando são iniciados pela primeira vez; portanto, embora o Windows possa não precisar ser reiniciado, alguns programas podem ser necessários antes de poder usar as novas variáveis. Um bom exemplo disso é ter que abrir uma nova janela de prompt de comando após adicionar um PATH (sim, eu fui enganado por isso).

20
nedm

Embora eu não tenha reputação suficiente para comentar a resposta mais votada para essa pergunta, gostaria de afirmar que não está exatamente correto. Eu sei disso porque não importa qual solução alternativa eu ​​tentei neste post, nada realmente funcionou.

O artigo kb vinculado a essa resposta na verdade afirma que:

No entanto, observe que as modificações nas variáveis ​​de ambiente não resultam em alterações imediatas. Por exemplo, se você iniciar outro prompt de comando após fazer as alterações, as variáveis ​​de ambiente refletirão os valores anteriores (não os atuais). As alterações não surtirão efeito até você fazer logoff e logon novamente.

A parte sobre as variáveis ​​de ambiente redefinidas para os valores anteriores após o recarregamento do prompt de comando é exatamente o que experimentei no Windows Server 2008.

O artigo continua dizendo:

Para efetuar essas alterações sem precisar fazer logoff, transmita uma mensagem WM_SETTINGCHANGE para todas as janelas do sistema, para que qualquer aplicativo interessado (como Windows Explorer, Gerenciador de Programas, Gerenciador de Tarefas, Painel de Controle etc.) possa executar uma atualização.

Isso não implica que o Explorer transmita uma mensagem WM_SETTINGCHANGE depois de alterar as variáveis ​​de ambiente do sistema ou que realmente funcione. Não tenho certeza de como você faria o que é sugerido no artigo da KB (para propagar as alterações imediatamente) no prompt de comando.

16
testworks

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ê queira 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 seu novo caminho foi adicionado à variável de ambiente

3. echo %PATH%

Feito.

Disponibilize a variá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 funcionando no Windows 7/10

4
Pedro Sousa

Uma solução possível para os serviços é executá-los temporariamente como outro usuário (que não seja 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 serviço, clique em propriedades do serviço e, na segunda guia, insira as 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 efetuou logon, isso deve funcionar sem problemas. Se você estiver usando uma conta de usuário atual, também poderá ser necessário reiniciar o Explorer.exe. Observe também que a execução de serviços como uma conta de usuário normal pode criar riscos à segurança.

3
Odin

Como as pessoas ainda não adicionaram essa resposta, gostaria de mencionar que você pode definir variáveis ​​permanentes do sistema que sobrevivam à reinicialização com o comando SETX.

por exemplo.

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

Observe que o descrito acima não funcionará na janela de comando atual e exigirá que você abra uma nova janela de comando antes que ela entre em vigor. Como resultado, dependendo do caso de uso; pode ser necessário combiná-lo com uma das outras técnicas acima.

Consulte o seguinte URL para obter detalhes adicionais :

1
Doug