Como posso executar um executável .COM (16 bits) que foi renomeado para .COS?

4

Estou tentando executar alguns programas DOS legados em 16 bits a partir de um prompt do Windows XP padrão. O problema é que as extensões de arquivo foram renomeadas de .COM para .COS e elas são armazenadas em mídia somente leitura e não posso copiá-las (ambiente especial).

Alguma dica sobre como invocar esses arquivos apesar da extensão estranha? Se eles tivessem sido EXEs de 32 bits, não seria um problema executá-los mesmo sem as extensões adequadas, mas com esses arquivos COM, não consigo encontrar uma maneira de executá-los.

    
por max16bit 02.03.2012 / 14:56

3 respostas

4

Ok. Eu descobri isso. Eu acho que sim. Isso aproveita o fato de que os arquivos DOS .COM são apenas imagens binárias com um cabeçalho de byte 0x100, com os primeiros bytes sendo um JMP 0x0100 (espero que eu esteja certo sobre isso) e o antigo utilitário DOS debug que existe no XP.

  • abrir prompt de comando
  • cd para o diretório que contém arquivos .COS
  • debug [enter]
  • Agora você está no prompt debug.exe (apenas um traço)
  • Digite n{name of your .COS file, including extension} - substituindo adequadamente. Por exemplo, para FILE.COS, digite nfile.cos e, em seguida, [enter]
  • Digite l (para carga) e depois [enter]
  • Digite g (para go) e depois [enter]

Deixe-me saber como isso acontece. Eu carreguei C:\windows\system32\tree.com , mas evidentemente é realmente um .EXE (diz que isso não pode ser executado no modo DOS). Boa sorte.

(BTW I apenas lê as coisas sobre tree.com, whoops!)

    
por 03.05.2012 / 00:51
4

Veja o que posso fazer :-) (fiz isso em uma caixa do DOS do XP):

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>

Ou seja. Obviamente, você pode executar arquivos COS se você nomear explicitamente a extensão no prompt do DOS.

    
por 08.03.2012 / 17:25
1

Não, receio que não seja possível fazer o que você deseja nas circunstâncias que você descreveu. Arquivos executáveis são tratados especialmente (devido à sua capacidade de infectar um sistema), portanto, o Windows não permitirá que você apenas execute qualquer arquivo antigo como um executável.

A variável de ambiente PATHEXT informa ao Windows quais programas são "executáveis" e podem ser "executados", mas há limites. Abra um prompt de comando e inclua .cos to pathext e tente executar um dos arquivos .cos :

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

Você verá que o programa padrão "todos os arquivos" é executado ou, se nenhum estiver configurado, que a caixa de diálogo Abrir com é apresentada. Por quê? Porque o Windows restringe o que pode ser executado por razões de segurança. Você deve ser capaz de registrar .cos arquivos como executáveis (como .py , .pl , etc.), mas mesmo assim, pode não ser possível, pois um arquivo .py ou .pl é na verdade apenas um < strong> document que é aberto por um programa, não por um executável .

Outra opção pode ser tentar criar uma associação na qual você informa ao sistema que .cos arquivos são comfiles . No entanto, o teste rápido que acabei de tentar não funcionou e o Windows reclamou que não é um arquivo executável e retornou acesso negado .

    
por 02.05.2012 / 23:09