Как запустить (16-разрядный) исполняемый файл .COM, который был переименован в .COS?

1094
max16bit

Я пытаюсь запустить пару 16-битных устаревших DOS-программ из стандартной командной строки Windows XP. Проблема в том, что расширения файлов были переименованы из .COM в .COS, и они хранятся на носителе только для чтения, и я не могу их скопировать (специальная среда).

Любые советы о том, как вызывать такие файлы, несмотря на странное расширение? Если бы это были 32-битные EXE-файлы, это не было бы проблемой при запуске их даже без их соответствующих расширений, но с этими COM-файлами я не могу найти способ их запуска.

4
Вы должны добавить больше информации об окружающей среде, особенно о вашей "особой среде". Robert 12 лет назад 0
Найдите способ записать новую копию носителя. Они были созданы каким-то образом. Ramhound 12 лет назад 0

3 ответа на вопрос

4
TheBlastOne

Посмотрите, что я могу сделать :-) (только что сделал это в окне XP DOS):

C:\>md test  C:\>cd test  C:\test>xcopy c:\windows\system32\tree.com C:\windows\system32\tree.com 1 File(s) copied  C:\test>md t1  C:\test>md t2  C:\test>tree Volume in drive C is OSDisk Volume Serial Number is 0006EFC4 9654:5A1E C:. ├───t1 └───t2  C:\test>ren tree.com tree.cos  C:\test>tree.cos Volume in drive C is OSDisk Volume Serial Number is 0006EFC4 9654:5A1E C:. ├───t1 └───t2  C:\test>ren tree.cos newname.cos  C:\test>newname.cos Volume in drive C is OSDisk Volume Serial Number is 0006EFC4 9654:5A1E C:. ├───t1 └───t2  C:\test> 

Т.е. вы, очевидно, можете выполнить cos-файлы, если явно дадите имя расширению в командной строке DOS.

Нету; это ** неверно **. Это работает потому, что `tree.com` на самом деле не является файлом .COM, это файл .EXE с расширением` .com` для обратной совместимости (как и почти все файлы .COM в Windows для довольно несколько версий сейчас). Если бы это был настоящий файл .COM, он был бы открыт с помощью программы «все файлы» по умолчанию, или, если ни один из них не установлен, то вам было бы предложено в диалоговом окне * Открыть с *. Synetech 11 лет назад 4
Правда. Здорово. Разверните, что простой тип tree.com показывает, что имеет подпись MZ exe. Doh. Так что будет правильным ответом? "Не за что"? TheBlastOne 11 лет назад 0
4
LawrenceC

Хорошо. Я понял это. Я думаю, в любом случае. Это использует тот факт, что файлы DOS .COM представляют собой просто двоичные изображения с заголовком 0x100 байт, причем первые два байта являются JMP 0x0100(надеюсь, я прав), и старая утилита DOS, debugсуществующая в XP.

  • открыть командную строку
  • cd в каталог, содержащий файлы .COS
  • debug [войти]
  • Вы сейчас на debug.exeподсказке (просто тире)
  • Тип n- подставляем соответственно. Например, для типа FILE.COS nfile.cos, затем [введите]
  • Введите l(для загрузки) затем [введите]
  • Введите g(для перехода) затем [введите]

Дайте мне знать, как это происходит. Я загрузил, C:\windows\system32\tree.comно, очевидно, это действительно .EXE(говорит, что это не может быть запущено в режиме DOS). Удачи.

(Кстати, я только что прочитал материал о tree.com, к сожалению!)

Да, это могло бы помочь. Конечно, это настоящая боль и некоторые серьезные ограничения, такие как невозможность запуска из командного файла или диалога * Run *. Неспособность скопировать их, конечно, расстраивает, не так ли? `` :-( Synetech 11 лет назад 0
1
Synetech

Нет, я боюсь, что невозможно сделать то, что вы хотите, в обстоятельствах, которые вы изложили. Исполняемые файлы обрабатываются особым образом (из-за их способности заражать систему), поэтому Windows не позволит вам просто запустить любой старый файл как исполняемый файл.

PATHEXTПеременная среды сообщает Windows, какие программы «исполняемые» и может быть «бежать», но есть пределы. Откройте командную строку и добавить .cosк pathextи попытаться запустить один из .cosфайлов:

> set pathext=.cos;%pathext% > foobar.cos 

Вы увидите, что либо запускается программа по умолчанию «все файлы», либо, если она не настроена, открывается диалоговое окно « Открыть с помощью ». Зачем? Потому что Windows ограничивает то, что может быть запущено по соображениям безопасности. Вы должны иметь возможность регистрировать .cosфайлы как исполняемые (например .py, .plи т. Д.), Но даже в этом случае это может оказаться невозможным, поскольку файл .pyили .pl- это на самом деле просто документ, который открывается программой, а не фактический исполняемый файл .

Другим вариантом может быть попытка создать ассоциацию, посредством которой вы сообщаете системе, что это за .cosфайлы comfiles. Тем не менее, быстрый тест, который я только что попробовал, не сработал, и Windows пожаловалась, что это не исполняемый файл, и вернула отказ в доступе .