Impede que o% PATH% do sistema Windows seja prefixado ao usuário% PATH?

12

Eu sei como definir variáveis de ambiente específicas do sistema ou do usuário:

Agora, o problema é que a variável PATH é tratada de tal forma que o valor que você digita para o usuário PATH será automaticamente anexado ao PATH do sistema e essa será a variável PATH efetiva.

Ou seja, digamos que eu tenha

(SYSTEM) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

e (USER) PATH=C:\Program Files\Bar\bin (note que não há %PATH% neste valor)

então a variável de ambiente resultante para este usuário será:

(eficaz) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

No entanto, eu prefiro que para uma conta de usuário do sistema operacional muito específica a variável de ambiente PATH deve ter o diretório bar\bin no início do PATH em vez de no final.

Existe uma maneira correta de dizer ao windows para sobrescrever completamente a variável PATH de um usuário com o valor para aquele usuário em vez de anexá-lo ao sistema PATH variable?

Nota: Obviamente, a partir de um arquivo em lote, tudo isso não importa, pois você pode definir e ajustar o env.vars como desejar.

    
por Martin 12.12.2011 / 17:08

3 respostas

1

Se você só precisa disso para trabalhar em sessões de prompt de comando, crie um arquivo em lote profile / init e configure-o no Registro, por link . Por exemplo,

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

Em seguida, basta fazer modificações no PATH nesse arquivo em lote. Por exemplo,

SET USER_PATH=c:\whatever
SET PATH=%USER_PATH%;%PATH%
    
por 14.08.2017 / 21:17
0

Eu tive o mesmo problema e isso funcionou para mim:

Você pode obter "variável de caminho do usuário" por meio de:

>reg query HKCU\Environment /v path

A saída (na minha máquina) é:

HKEY_CURRENT_USER\Environment
    path    REG_SZ    C:\Program Files (x86)\GnuWin32\bin

Mas você precisa analisar isso e usar a parte relevante.

Eu li a solução aqui aqui e testado na minha máquina.

    
por 11.03.2014 / 01:17
-1

Eu não sei como ignorar a variável de sistema, mas sei que, se você usar variáveis de sessão (via SET command), elas terão precedência sobre outras variáveis. Então você pode usar a instrução SET PATH=C:\Program Files\Bar\bin e seu caminho desejado será a primeira parte da variável.

Aqui é uma referência válida e relato aqui um período simples dessa página:

If variables with the same name are stored as both User and Machine Environment variables, the user variable will take precedence. If a Session variable is created that will take precedence over any User and/or Machine Environment variable with the same name.

    
por 01.09.2018 / 17:27