Qual é o valor padrão da variável de ambiente PATHEXT para o Windows?

1

Qual é o valor padrão para a variável de ambiente PATHEXT para diferentes versões do Windows? Ou ainda melhor: como você pode determinar com segurança o valor do sistema padrão original para o PATHEXT em um sistema quando ele pode ter sido modificado pelo software instalado, pela política de grupo, etc?

Estou interessado no Windows 7, 8 e 10 no mínimo. Infelizmente eu não tenho nenhum sistema novo para verificar isso.

Para a pedagogia geral: a variável de ambiente PATHEXT define quais extensões de arquivo o Windows considera como comandos executáveis. Por exemplo, meu sistema tem:

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Quando você digitar um comando no cmd.exe, como explorer , o Windows procurará arquivos com essas extensões (nesta ordem) para determinar se deve executar o aplicativo / arquivo. explorer normalmente resolverá para explorer.exe , que é encontrado no PATH em c:\windows\explorer.exe .

    
por ebpa 16.01.2016 / 06:33

2 respostas

1

O valor padrão no Windows XP: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

O valor padrão no Windows Vista, 7, 8 e 10 - também confirmou no Server 2008 R2: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Se o seu valor não for o mesmo, ele foi modificado. Esses são os valores padrão prontos para uso. .MSC é a única adição desde o Windows XP, um arquivo de controle de snap-in do Microsoft Management Console, usado para coisas como o Editor de Diretiva de Grupo gpedit.msc .

Outras leituras: Wikipedia

Você pode executar o seguinte lote ou uma variação dele para ver rapidamente se eles foram alterados.

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j

IF "%version%" == "5.1" GOTO windowsxp
IF "%version%" == "5.2" GOTO windowsxp

:windowsabovexp

set "PATHEXTORIGINAL=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"

GOTO compare

:windowsxp

set "PATHEXTORIGINAL=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH"

:compare

if not "%PATHEXT%" == "%PATHEXTORIGINAL%" (
   echo PATHEXT has been modified!
) else (
   echo PATHEXT is expected!
)
    
por 16.01.2016 / 06:40
0

Com um pouco de trabalho, você pode fazer alguma validação usando um script em lote:

FOR /F "tokens=* delims=;" %%A IN (".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC") DO @echo %%A

NOTA: O exemplo acima é para uso em um arquivo em lotes. Se você deseja executar diretamente em um prompt do CMD, altere %% A para apenas% A para ver os resultados.

Depois, você pode comparar ou contar os resultados. Se não corresponder, envie um alerta, por exemplo.

Espero que isso ajude!

    
por 16.01.2016 / 07:27