Adicionar um diretório ao usuário PATH não funciona?

3

Acabei de instalar o gvim no meu sistema Windows (é no C: \ gvim, de qualquer forma). Então eu adiciono C: \ gvim \ vim73 \ no PATH do usuário, não no PATH do sistema. Depois disso, tentei invocar o vim a partir do prompt de comando. Não, não funcionou. Então, eu removi o diretório gvim do PATH do usuário para o PATH do sistema. Isso funcionou.

Ainda estou curioso, então faço um "echo% PATH%" e o resultado é tudo do PATH do sistema.

Meu entendimento é o sistema PATH tem uma prioridade mais alta que o usuário, então o Windows primeiro tentará pesquisar o PATH do sistema, e depois disso os usuários '. Então deveria ter funcionado, mas não funcionou.

    
por anta40 27.10.2011 / 19:43

1 resposta

8

Você não está definindo nenhuma variável de ambiente de qualquer forma quando modifica o registro.

As variáveis de ambiente não são mantidas no registro. O que é mantido no registro é um modelo , do qual programas como o Windows Explorer (re-) constroem suas variáveis de ambiente quando são notificados para fazer isso. As variáveis de ambiente reais são por processo e são armazenadas no próprio espaço de endereço de cada processo, inicialmente herdado de seu processo pai e modificável posteriormente no capricho do processo. Os programas como o Windows Explorer participam de um protocolo voluntário, pelo qual eles relerão o modelo e atualizarão seu próprio ambiente por processo sempre que houver um http://msdn.microsoft.com /pt-pt/library/ms725497(VS.85).aspx "title=" WM_SETTINGCHANGE Message "> uma mensagem do Windows é transmitida para todas as janelas (de nível superior) num ambiente de trabalho.

Muitos programas Win32 não participam deste protocolo voluntário . O interpretador de comandos da Microsoft é um desses programas. Para modificar uma variável de ambiente em um processo do interpretador de comandos da Microsoft em execução, são usados os comandos do interpretador de comandos ordinários para modificar variáveis de ambiente, como SET , DPATH e PATH . O ambiente modificado será herdado por todo processo gerado pelo interpretador de comandos.

Da mesma forma, o ambiente modificado em um processo do Windows Explorer é herdado apenas por processos que são gerados pelo Windows Explorer após receber a mensagem e reler o modelo. As variáveis de ambiente de um processo que já está em execução não são afetadas por modificações feitas por outros processos para as variáveis de ambiente suas próprias . Um interpretador de comandos já em execução da Microsoft não ganhará magicamente um ambiente alterado a partir do processo do Windows Explorer que gerou antes da alteração.

Outros interpretadores de comandos são diferentes. , por exemplo, participa do protocolo voluntário. Ele reconhecerá a mensagem do Windows e atualizará seu próprio ambiente por processo a partir do modelo no registro, quando seu "Atualizar ambiente na alteração do sistema" está ativada.

    
por 27.10.2011 / 21:31