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, copyitp.)
- 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.comto starsza wersja 16-bitowa (dostępna tylko w instalacjach 32-bitowych). Nie istnieje w mojej 64-bitowej wersji systemu Windows 7.