TL; DR
Po uruchomieniu 32-bitowego programu konsoli jest on wykonywany przez cmd
; kiedy uruchamiasz 16-bitowy program konsoli, jest on wykonywany przez command
.
Detale
System Windows XP zawiera podsystem obsługujący starsze aplikacje 16-bitowe.
Stare aplikacje 16-bitowe są dostępne jako programy DOS i Windows. Programy DOS ze swej natury są aplikacjami konsoli i działają w wierszu polecenia. Jednak 32-bitowe aplikacje konsoli Windows są bardzo podobne i wyglądają tak samo.
Procesor poleceń / interpreter cmd
ma kilka celów:
- Aby uruchomić 32-bitowy tekst programu konsoli Windows
- Aby zapewnić i obsługiwać różne funkcje wiersza poleceń (
dir
, copy
itp.)
- Interpretuj i wykonuj pliki wsadowe (zgodne z DOS
.bat
pliki i kompatybilne z NT .cmd
pliki)
Po uruchomieniu starego 16-bitowego programu konsoli jest on wykonywany przez NTVDM (Windows NT Virtual DOS Machine). Zapewnia emulowany system DOS (stąd wirtualna maszyna DOS ) który jest podobny do uruchamiania dedykowanego oprogramowania maszyny wirtualnej, z wyjątkiem tego, że warstwa emulacji jest prostsza. command
jest 16-bitową wersją interpretera poleceń, która jest znacznie bliższa rzeczywistemu DOS niż cmd.exe
który jest w rzeczywistości programem Windows (w przeciwieństwie do nagłówka Windows PE) command.com
który ma nagłówek DOS MZ).
command
ma te same cele co cmd
poza tym, że obsługuje tylko programy 16-bitowe. Ponadto nie obsługuje .cmd
pliki i ma mniej wbudowanych poleceń i ma bardziej ograniczoną składnię ( cmd
jest nowszym, bardziej nowoczesnym, bardziej zaawansowanym interpretatorem wiersza polecenia, podobnym do 4DOS ).
Obsługuje jednak graficzne programy DOS (takie jak stare gry), ale sukces ich uruchomienia zależy od sterowników karty graficznej i charakteru programu. Istnieje wiele witryn, które oferują różne sztuczki aby uruchomić gry DOS w systemie Windows (chociaż sukces w systemie Vista i wyższym jest zazwyczaj bardziej ograniczony niż w przypadku XP).
Należy zauważyć, że 64-bitowe wersje systemu Windows całkowicie usunęły obsługę programów 16-bitowych, więc nie zawierają command
w ogóle nie będzie działać ani 16-bitowy program DOS, ani Windows, a zamiast tego rzuci (wprowadzające w błąd) Komunikat o błędzie .
Uwagi techniczne
command.com
ma .com
rozszerzenie dla wstecznej kompatybilności z programami DOS, ale podobnie jak większość innych wersji zewnętrznych poleceń DOS dla systemu Windows, wewnętrznie jest to właściwie Windows PE .exe
plik. Daje to interesującą obserwację, że podczas gdy system Windows używa rozszerzenia jako wskaźnika obsługi większości typów plików, w przypadku plików wykonywalnych ignoruje rozszerzenie i sprawdza jego zawartość (w przeciwnym razie .exe
nie działa, jeśli jest traktowany jako .com
). To pytanie odnosi się do tego efektu.
command.com
to starsza wersja 16-bitowa (dostępna tylko w instalacjach 32-bitowych). Nie istnieje w mojej 64-bitowej wersji systemu Windows 7.