Apa nilai default variabel lingkungan PATHEXT untuk Windows?

1

Apa nilai default untuk variabel lingkungan PATHEXT untuk berbagai versi Windows? Atau bahkan lebih baik: Bagaimana Anda dapat dengan andal menentukan nilai sistem default asli untuk PATHEXT pada sistem ketika mungkin telah dimodifikasi oleh perangkat lunak yang diinstal, kebijakan grup, dll?

Saya tertarik pada Windows 7, 8, dan 10 minimal. Sayangnya saya tidak memiliki sistem baru untuk memeriksanya.

Untuk pedagogi umum: variabel lingkungan PATHEXTmenentukan ekstensi file apa yang dianggap Windows sebagai perintah yang dapat dieksekusi. Sebagai contoh, sistem saya memiliki:

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

Ketika Anda mengetik perintah ke cmd.exe seperti explorerWindows akan mencari file dengan ekstensi ini (dalam urutan ini) untuk menentukan apakah akan menjalankan aplikasi / file. explorerbiasanya akan memutuskan explorer.exeyang ditemukan di PATH di c:\windows\explorer.exe.

Epa
sumber
1
Bekerja pada sistem Corporate Windows 7, itu sama dengan daftar yang Anda miliki di atas.
Leptonator

Jawaban:

2

Nilai default di Windows XP: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

Nilai default di Windows Vista, 7, 8 dan 10 - juga telah dikonfirmasi di Server 2008 R2: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Jika nilai Anda tidak sama dengan ini, itu telah dimodifikasi, ini adalah nilai default out-of-the-box. .MSCadalah satu-satunya tambahan sejak Windows XP, File Kontrol Snap-in Konsol Manajemen Microsoft, digunakan untuk hal-hal seperti Editor Kebijakan Grup gpedit.msc.

Bacaan lebih lanjut: Wikipedia

Anda bisa menjalankan kumpulan berikut, atau variasi dari itu, untuk dengan cepat melihat apakah mereka telah diubah.

@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!
)
Jonno
sumber
Apakah Anda tahu bagaimana seseorang dapat memverifikasi nilai untuk versi Windows tertentu?
ebpa
@ebpa Apakah maksud Anda selain hanya melihat nilai dalam% PATHEXT%?
Jonno
Iya. Agaknya nilai historis otoritatif (asli bawaan) tetap utuh pada sistem dan dapat diperiksa. Nilai registri tidak selalu dapat dipercaya. Saya tidak meragukan jawaban Anda; ini hanya keingintahuan intelektual. Mungkin saya harus memunculkan pertanyaan terpisah karena ini berlaku untuk variabel lingkungan secara umum ...
ebpa
@ebpa Saya tidak percaya bahwa default disimpan di mana saja, mereka kemungkinan besar hanya akan ditempatkan pada saat instalasi karena tidak ada 'reset ke pengaturan default' di mana saja untuk variabel lingkungan. Saya telah menambahkan ke jawaban saya kumpulan yang dapat Anda gunakan untuk memverifikasi dengan cepat jika modifikasi telah dilakukan, tetapi sebaliknya saya sangat ragu akan ada verifikasi 'built-in'.
Jonno
0

Dengan sedikit kerja, Anda bisa melakukan beberapa validasi menggunakan skrip batch:

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

CATATAN: Contoh di atas untuk digunakan dalam file batch. Jika Anda ingin menjalankan langsung pada prompt CMD, ubah %% A menjadi hanya% A untuk melihat hasilnya.

Kemudian, Anda dapat membandingkan atau menghitung hasilnya. Jika tidak cocok, kirim peringatan, misalnya.

Semoga ini membantu!

Leptonator
sumber