No Windows, * .exe, * .bat, * .cmd e * .com representam programas ou scripts de shell que podem ser executados, simplesmente clicando duas vezes neles. Existem outras extensões de nome de arquivo que indicam que um arquivo é executável?
Edição : Quando eu pulo para um novo projeto (ou de volta para um projeto antigo!), Uma das coisas comuns que quero fazer ao olhar em volta é descobrir quais ferramentas existem. No Unix (que eu uso há décadas), há um bit de execução, portanto, é tão simples quanto:
find . -executable -type f
Imaginei que no Windows, que parece ter um mecanismo muito mais complexo para "este executável (e como o executo)", haveria um número relativamente pequeno de extensões de nome de arquivo que serviriam aproximadamente para o mesmo propósito.
Para o meu projeto atual, *.exe *.bat *.cmd
é quase certamente suficiente, mas pensei em perguntar se havia uma lista autorizada.
Um dos programas de instalação mais comuns é o
.msi
.fonte
msiexec.exe
..vbs é um script. e .js
Mas se você conhece alguma história, poderá colocar as coisas em contexto melhor. Suponho que, se não tivesse usado computadores há tanto tempo, também poderia me concentrar em saber quais extensões são executáveis ... porque são bastante empolgantes e parecem fundamentais ... e suponho que sejam ... Mas observe como com o tempo, o .COM morreu muito depois do DOS, apenas o mais conhecido, suponho depois disso, se houver, no Windows 9x no shell command.com. Talvez os NTs antigos os usassem bastante. Scripts .. vbs surgiram em torno de win9x, talvez .. então aparecem novos. ps1 é ainda mais recente que vbs.
.COM é muito antigo. Não sei se o Windows XP, por exemplo, se baseia em arquivos .COM. Mas ele tem mais um command.com para aplicativos herdados, eu acho.
.BAT é um script .. de volta para os dias do DOS. ainda em uso hoje. O .VBS é mais moderno, mas o .BAT ainda é usado e não será mais usado em breve, e as pessoas sensatamente usam os dois. Há .CMD que eu não usei, mas provavelmente não é tão diferente de nada. Existe o ps1 (powershell. Isso é mais moderno que o vbscript) Se estamos falando de scripts em um sentido genérico, existem .REG
Realmente, o termo executável se aplica apenas a EXE e .COM (o COM é basicamente extinto. Mas não o CMD do NT, por exemplo, o shell de comando do NT é cmd.exe, embora, como mencionado, exista um command.com no NT, acho que para aplicativos herdados, mas o NT provavelmente não depende dele)
.MSC, por exemplo, start..run..services.msc Eles não são executáveis .. Suponho que sejam um tipo de script .. services.msc parece estar escrito em xml) para coisas que não são do sistema, e dizem que as páginas HTML são uma só porque são interpretadas .. como um script. Mas não pelo sistema operacional .. CPL não são scripts .. olhe para eles no bloco de notas. As pessoas tendem a não pensar neles como executáveis ou scripts, talvez porque apenas os desenvolvedores da MS os escrevam. (ou se outros o fizerem, isso é muito incomum!)
fonte
.MSC
aoPATHEXT
não permite que você execute snap-ins do MMC sem adicionar a extensão (por exemplo, emservices
vez deservices.msc
).:-(
services.exe
.diskmgmt
(sem a extensão) em um prompt de comando, ele funcionará, mas a execuçãoservices
não. No entanto, nenhum deles funcionará se você tentar executá-los na caixa de diálogo Executar sem a.msc
extensão, mesmo que apathext
variável em todo o sistema contenha.msc
.Denotar para quê?
Eu sei que essa pergunta provavelmente parece um pouco confusa no momento, mas a questão importa. Como explico por que isso importa, a questão ficará mais clara.
Embora a resposta de Ken White à variável PATHEXT (no "ambiente" do prompt de comando) seja uma resposta agradável e curta, e essa resposta possa funcionar bem para você, a resposta está incompleta. O motivo está incompleto é que a resposta correta é diferente com base no que você está tentando fazer.
Por exemplo, você pode tentar:
Alguns desses métodos de execução de programas podem usar métodos diferentes para determinar quais extensões de nome de arquivo podem ser suportadas. Em particular, o uso do CMD pode ser diferente do menu Executar.
Por exemplo, o intrigante blog de Wes: Customizing Windows Run Command ... observa diferentes locais sendo verificados, incluindo a chave do registro.
A resposta também pode depender de qual versão do Microsoft Windows está sendo usada. No Windows 10, digitei o nome de um arquivo zip em um prompt de comando e ele abriu o Windows Explorer. Lembro-me de que não estava funcionando no Windows XP (embora no Windows XP eu pudesse digitar "start filename.zip" e obter o mesmo tipo de efeito). Portanto, minha memória está com defeito ou a Microsoft está tentando fazer melhorias nas versões mais recentes do Windows. (Felizmente, para mim, o último.)
No prompt de comando tradicional do Windows 10 (executando "CMD"), quando eu for para o local (usando o comando "CD") de um arquivo zip e digite "filename.zip", o arquivo será aberto. Quando vou para esse local e digite "filename" (excluindo a extensão de arquivo ".zip"), o Windows não encontra o arquivo. No entanto, se eu executar "
ECHO %PATHEXT%
" e depois "SET PATHEXT=%PATHEXT%;.ZIP
" (e depois "ECHO %PATHEXT%
" novamente, para garantir o efeito desejado), digite "filename" e o prompt de comando encontrará o arquivo .ZIP. Portanto, esse é o efeito da variável% PATHEXT%.Você pode ver outra lista de extensões executando o
ASSOC
comando Por exemplo, a execução desse comando mostra várias linhas de saída, incluindo as seguintes (no meu sistema) - ".zip=CompressedFolder
". Então, posso ver o que é executado digitando "FTYPE | FIND /I "CompressedFolder"
". (Isso é destinado à linha de comando tradicional. O PowerShell não gosta dessas aspas sem escape.) (Se você digitar "FTYPE
" sem o restante dessa linha de comando, verá um pouco mais de saída sobre outras extensões.)Se eu digitar "
ASSOC | FIND /C "."
", no meu computador com Windows 10, descobri que tenho 339 linhas de saída ao verificar associações de arquivos dessa maneira.O MS KB 162059 trata de ajustar como o Internet Explorer abre documentos do Office.
Portanto, pedir a lista de executáveis padrão é muito vago. Diferentes componentes do Microsoft Windows podem usar recursos diferentes; portanto, a pergunta precisa ser mais específica para obter uma resposta precisa.
A pergunta mencionou o uso do Explorer para clicar duas vezes em um ícone. Para ver a lista de executáveis usados por isso, acredito que você queira verificar o registro. Você pode executar isso em um prompt de comando:
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
(Não vou listá-los aqui. Existem 286 deles no meu computador com Windows 10.)
Isso lista as extensões. Para ver mais informações, incluindo detalhes sobre as extensões:
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts /s
Então, como você pode ver até agora, essa pergunta aparentemente inocente pode realmente ser um tópico bastante complexo. Acredito que afirmei por que uma pergunta deve ser bastante específica para poder obter uma resposta completa que aborde totalmente como um único componente do Windows pode determinar as extensões de nome de arquivo. Em poucas palavras, não há apenas uma resposta para o Windows, pois o Windows possui vários componentes que se comportam de maneiras diferentes. Espero ter começado a mostrar isso e apontado para alguns recursos adicionais que mostram informações relevantes.
fonte