Windows 的 PATHEXT 环境变量的默认值是什么?

Windows 的 PATHEXT 环境变量的默认值是什么?

不同版本的 Windows 中 PATHEXT 环境变量的默认值是什么?或者更好的是:当系统上 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 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!
)

答案2

只需一点点工作,您就可以使用批处理脚本进行一些验证:

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

注意:以上示例用于批处理文件。如果要直接在 CMD 提示符下运行,请将 %%A 更改为 %A 以查看结果。

然后,您可以比较或计算结果。例如,如果不匹配,则发送警报。

希望这可以帮助!

相关内容