Variáveis ​​de ambiente no PATH não expandidas para prompt de comando que não é de administrador?


11

Eu tenho uma máquina Windows 7 que, quando o prompt de comando é executado por um usuário normal, falha ao expandir as variáveis ​​de ambiente no %PATH%. Se o prompt de comando for executado como administrador (clique com o botão direito do mouse em Executar como administrador ), ele %PATH%será expandido adequadamente.

Especificamente, %PATH%para cmd.exeexecutar como o usuário (exibido via set path) é o seguinte:

Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

... enquanto que %PATH%para cmd.exeexecutar como administrador é o seguinte:

Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

Tentei fazer login como novo usuário para criar um novo perfil, e o problema persiste nesse perfil também. HKEY_CURRENT_USER\Environment\PATHnão existe e HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Pathcorresponde ao caminho definido em todo o sistema em Propriedades do computador -> Variáveis ​​de ambiente.

Alguém tem alguma idéia do que possa ser, ou para onde eu posso procurar?

Respostas:


8

Duas coisas que eu poderia tentar.

  1. Execute um sfc /scannowpara ver se isso corrige problemas maiores em jogo.
  2. Verifique o registro para a Pathchave HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Qual é o tipo ? Deveria dizerREG_EXPAND_SZ

Foi isso. Se eu pegar uma máquina normal e configurá-la para REG_SZo problema ocorrer, se eu configurá-la novamente, REG_EXPAND_SZela será corrigida.
Steve Vigneau

@Steve - Sweet! Eu mesmo aprendi algo sobre isso :)
Nixphoe

1
Mas eu me pergunto. Por que ele cria esses ambientes com o tipo de valor errado no registro? Não me lembro de ter esse problema antes, estou usando o Windows 8.1 Update 1 e parece que esse problema pode ter acontecido mesmo no XP! support.microsoft.com/kb/329308
Adrián Pérez

0

Corri para o mesmo problema ao tentar configurar o Maven ...

Encontrei este post no Superusuário que esclareceu o problema, mas não funcionou para mim. O problema parecia ser sobre elevação de direitos, já que um shell de administrador funcionaria, mas um shell de usuário não. Finalmente, decidi recriar as variáveis ​​de usuário como variáveis ​​do sistema e adicioná-las ao caminho global.

Isso funcionou para algumas variáveis, mas eu tinha um par que ainda não se expandia. Eu os recriei com novos nomes algumas vezes, sem sucesso. No entanto, as variáveis ​​finalmente se expandiram corretamente no shell do usuário depois que desativei o UAC, reiniciei, reativei o UAC e reiniciei novamente.


0

Eu tive um problema muito semelhante - a solução simples era adicionar um ponto-e-vírgula após o alias na definição do caminho .

Longa história:

Estou usando, node.jsentão, tenho um alias NODE_HOME definido por meio de uma variável de ambiente do usuário. Em seguida, anexo esse alias à minha variável de ambiente PATH .

O que eu acho é que, após uma reinicialização, o shell perdeu o caminho para NODE_HOME, para que npmetc. não funcione. O que está acontecendo?

Na inspeção, vejo que NODE_HOME está definido, mas que ele adquiriu magicamente um ponto e vírgula.

C:\Users\ob>echo %NODE_HOME%
C:\Users\ob\node-8.11.1;

PATH agora termina na cadeia literal % NODE_HOME% em vez do caminho expandido para a pasta do nó:

C:\Users\ob>echo %PATH%
C:\Program...rams\Git\cmd;%NODE_HOME%

Para fixar isso:

Em primeiro lugar, eliminar o ponto e vírgula errante a partir da extremidade da definição de NODE_HOME .

Segundo, adicione um ponto-e-vírgula após o símbolo NODE_HOME na definição de PATH :

C:\Program...rams\Git\cmd;%NODE_HOME%;

Agora, quando inicio um novo shell e expanda PATH , ele encontra NODE_HOME :

C:\Users\ob>echo %PATH%
C:\Program...ams\Git\cmd;C:\Users\tkobo\Installations\node-8.11.1;

E npmfunciona de novo!


-1

PROBLEMA : Meu problema foi apenas semelhante, como entendi corretamente. Meu "Caminho" continha ...;% ANT_HOME% \ bin; ... Eu tinha a variável ANT_HOME definida corretamente em Variáveis ​​do sistema (não usuário) e CMD -> SET igual a "echo% ANT_HOME%" as imprimiu corretamente .

SOLUÇÃO : Solucionei o problema movendo a pasta de c: \ dev \ 3rd \ ant ... para c: ** Arquivos de Programas (x86) ** \ dev \ 3rd \ ant ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.