Se eu executar a set PATH=%PATH%;C:\\Something\\bin
partir da linha de comando ( cmd.exe
) e, em seguida, executar echo %PATH%
, vejo essa sequência adicionada ao PATH. Se eu fechar e abrir a linha de comando, essa nova sequência não estará no PATH.
Como posso atualizar o PATH permanentemente a partir da linha de comando para todos os processos no futuro, não apenas para o processo atual?
Não quero fazer isso acessando Propriedades do sistema → Avançado → Variáveis de ambiente e atualize o PATH lá.
Este comando deve ser executado a partir de um aplicativo Java (consulte minha outra pergunta ).
Runtime.getRuntime().exec("my command");
Respostas:
A documentação sobre como fazer isso pode ser encontrada no MSDN . A extração da chave é esta:
Observe que seu aplicativo precisará de direitos de administrador elevados para poder modificar essa chave.
Você indica nos comentários que ficaria feliz em modificar apenas o ambiente por usuário. Faça isso editando os valores em HKEY_CURRENT_USER \ Environment . Como antes, verifique se você transmitiu uma
WM_SETTINGCHANGE
mensagem.Você deve conseguir fazer isso a partir do seu aplicativo Java com bastante facilidade usando as classes de registro JNI.
fonte
HKEY_CURRENT_USER\Environment
para evitar os requisitos de elevação.requestedExecutionLevel
comorequireAdministrator
no manifesto do aplicativo.Você pode usar:
No entanto,
setx
truncará a cadeia armazenada para 1024 bytes, potencialmente corrompendo o PATH./M
vai mudar oPATH
emHKEY_LOCAL_MACHINE
vez deHKEY_CURRENT_USER
. Em outras palavras, uma variável do sistema, em vez do usuário. Por exemplo:Você deve ter em mente que o novo PATH não é visível no seu atual
cmd.exe
.Mas se você olhar no registro ou em um novo
cmd.exe
com"set p"
você, poderá ver o novo valor.fonte
setx
alterar o caminho da máquina em vez do caminho do usuário?/m
no final do comando, no Windows XP e no 7. Ainda não tentei.setx
comando "Opção padrão não é permitida mais que o tempo '2'" Como ignorá-lo?Eu aviso contra o uso do comando
para modificar a variável PATH devido a um "recurso" de sua implementação. Em muitas instalações (a maioria?) Atualmente, a variável será longa -
setx
truncará a cadeia armazenada para 1024 bytes, potencialmente corrompendo o PATH (consulte a discussão aqui ).( Eu me inscrevi especificamente para sinalizar esse problema e, portanto, não tenho a reputação do site para comentar diretamente a resposta postada em 2 de maio de 12. Meus agradecimentos a beresfordt por adicionar esse comentário )
fonte
Este script Python [*] faz exatamente isso:
Abaixo estão alguns exemplos de uso, supondo que ele tenha sido salvo em um arquivo chamado
setenv.py
em algum lugar do seu caminho atual. Observe que nesses exemplos eu não tinha direitos de administrador , portanto as alterações afetaram apenas a árvore de registro do meu usuário local:[*] Adaptado de: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
fonte
Para fins de referência, para quem procura alterar o caminho via código, estou citando uma publicação útil de um programador Delphi nesta página da web: http://www.tek-tips.com/viewthread.cfm?qid=686382
fonte
Em uma rede corporativa, onde o usuário tem acesso limitado e usa aplicativos portáteis, existem estes truques de linha de comando:
reg query "HKEY_CURRENT_USER\Environment"
. Use"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
para LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. UseREG_EXPAND_SZ
para caminhos que contenham outras variáveis %%.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.fonte
Este script http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
inclui todas as chamadas necessárias da API do Windows que podem ser refatoradas para suas necessidades. Na verdade, é uma GUI do AutoHotkey para alterar o PATH do sistema facilmente. Precisa ser executado como administrador.
fonte