Яке значення за замовчуванням змінної середовища PATHEXT для Windows?


1

Яке значення за замовчуванням для змінної середовища PATHEXT для різних версій Windows? Або ще краще: як можна надійно визначити початкове системне значення PATHEXT за замовчуванням у системі, коли воно, можливо, було змінено встановленим програмним забезпеченням, груповою політикою тощо?

Мене цікавлять як мінімум Windows 7, 8 та 10. На жаль, у мене немає свіжих систем, щоб це перевірити.

Для загальної педагогіки: змінна середовища PATHEXTвизначає, які розширення файлів Windows розглядає як виконувані команди. Наприклад, у моїй системі є:

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

Коли ви вводите команду в cmd.exe, наприклад explorerWindows, буде шукати файли з цими розширеннями (у цьому порядку), щоб визначити, чи потрібно виконувати додаток / файл. explorerзазвичай вирішує, explorer.exeщо знаходиться в PATH в c:\windows\explorer.exe.


1
Працюючи над корпоративною системою Windows 7, вона є такою ж, як у списку, який ви маєте вище.
Лептонатор

Відповіді:


2

Значення за замовчуванням у Windows XP: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

Значення за замовчуванням у Windows Vista, 7, 8 та 10 - також підтверджено в Server 2008 R2: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Якщо ваше значення не таке, як це, воно було змінено, це значення за замовчуванням у вихідному коді. .MSC- єдине доповнення, оскільки Windows XP, файл керування консольною панеллю управління Microsoft, який використовується для таких речей, як редактор групової політики gpedit.msc.

Подальше читання: Вікіпедія

Ви можете запустити наступну партію або її зміни, щоб швидко побачити, чи були вони змінені.

@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!
)

Чи знаєте ви, як хтось міг перевірити значення для певної версії Windows?
ebpa

@ebpa Ви маєте на увазі, крім того, щоб просто подивитися на значення у% PATHEXT%?
Jonno

Так. Імовірно, історичне авторитетне значення (початкове значення за замовчуванням) залишається неушкодженим у системі та може бути досліджене. Значення реєстру не обов'язково можна довіряти. Я не сумніваюся у вашій відповіді; це лише інтелектуальна цікавість. Можливо, мені слід породжувати окреме питання, оскільки це стосується змінних довкілля взагалі ...
ebpa

@ebpa Я не вірю, що дефолти зберігаються в будь-якому місці, вони, швидше за все, просто будуть встановлені під час встановлення, оскільки ніде немає "скидання до налаштувань за замовчуванням" для змінних довкілля. Я додав до своєї відповіді партію, яку ви могли використовувати, щоб швидко перевірити, чи була внесена модифікація, але в іншому випадку я дуже сумніваюся, що існує "вбудована" перевірка.
Jonno

0

Трохи працюючи, ви можете виконати перевірку за допомогою пакетного сценарію:

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

ПРИМІТКА. Наведений вище приклад призначений для використання у пакетному файлі. Якщо ви хочете запустити безпосередньо підказку CMD, змініть %% A на лише% A, щоб побачити результати.

Потім ви могли порівняти або порахувати результати. Якщо це не відповідає, надішліть, наприклад, попередження.

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.