Se eu executar set PATH=%PATH%;C:\\\\i1}something
binda linha de comando (
cmd.exe) e depois executar
echo %PATH%` vejo esta string adicionada ao PATH. Se eu fechar e abrir a linha de comando, essa nova cadeia de caracteres não está no PATH.
Como posso actualizar PATH permanentemente a partir da linha de comando para todos os processos no futuro, e não apenas para o processo actual?
Eu não't quero fazer isto indo a System Properties → Advanced → variáveis ambientais e actualizar o PATH lá.
Este comando deve ser executado a partir de uma aplicação Java (por favor ver a minha outra pergunta).
Pode utilizar:
setx PATH "%PATH%;C:\\Something\\bin"
No entanto, setx
truncará o cordão armazenado a 1024 bytes, corrompendo potencialmente o PATH.
/M
irá mudar o PATH
em HKEY_LOCAL_MACHINE
em vez de HKEY_CURRENT_USER
. Por outras palavras, uma variável de sistema, em vez do utilizador's. Por exemplo:
SETX /M PATH "%PATH%;C:\your path with spaces"
Tem de ter em mente que o novo PATH não é visível no seu actual cmd.exe
.
Mas se olhar no registo ou num novo cmd.exe
com "set p"
pode ver o novo valor.
A documentação sobre como fazer isto pode ser encontrada em MSDN. O extracto chave é este:
Para programar, adicionar ou modificar variáveis de ambiente do sistema, adicioná-las ao HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\Environment, depois transmitir uma mensagem
WM_SETTINGCHANGE
com lParam definido para a string "Environment". Isto permite que aplicações, tais como a shell, possam captar as suas actualizações.
Note que a sua candidatura necessitará de elevados direitos de administrador para poder modificar esta chave.
Indica nos comentários que teria todo o prazer em modificar apenas o ambiente por utilizador. Faça-o editando os valores em HKEY_CURRENT_USER\Environment. Como antes, certifique-se de que transmite uma mensagem WM_SETTINGCHANGE
.
Deverá ser capaz de o fazer a partir da sua aplicação Java com facilidade suficiente utilizando as classes de registo da JNI.
Para referência, para quem procura como mudar o caminho via código, estou a citar um post útil de um programador Delphi desta página web: http://www.tek-tips.com/viewthread.cfm?qid=686382
TonHu (Programador) 22 Oct 03 17:57 Encontrei onde li o original posting, it's aqui: http://news.jrsoftware.org/news/innosetup.isx/msg02129....
O excerto do que seria necessário é este:
deve especificar a corda "Ambiente " em LParam. Em Delphi you'd faça isto desta forma:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
Foi sugerido por Jordan Russell, http://www.jrsoftware.org, the autor de (a.o.) InnoSetup, ("Inno Setup é um instalador gratuito para programas Windows. Introduzido pela primeira vez em 1997, o Inno Setup rivaliza hoje e até ultrapassa muitos instaladores comerciais em conjunto de características e estabilidade.") (apenas gostaria que mais pessoas utilizassem a InnoSetup )
HTH