Os manipuladores de menu de contexto do Windows podem ser estáticos , bem como dinâmicos . Se você estiver interessado em aprofundar ainda mais, eu aconselho você a ler o Artigo de atalhos (Contextos) e manipuladores de menus de atalho , especialmente Escolhendo um Método de Menu de Atalho Estático ou Dinâmico e Personalizando um menu de atalho usando verbos dinâmicos .
Citando esta Visual Basic Programação da Shell trecho do livro :
Dynamic Context Menus
Static context menus are limited because they are the same for every file object of a given type. Also, the number of files that can be processed through a static menu is limited by the program that is used to carry out the command. What if you need to process 20 files? What if you need different processing options based on the state of the file itself? There are also situations where you might need one context menu for a group of files and another for a single file. This is where dynamic context menus come into play.
...
You might want different menu items displayed based on whether one or multiple files have been selected. Since the number of files selected can be determined in IShellExtInit::Initialize, this becomes a trivial matter. You also have the ability to base the menu item on the file itself. In addition to the number of files selected, you would also already know the filenames in question. This means you could open the file, retrieve information, and base the menu item on actual data. Or you could examine some other attribute of the file (such as its creation date, its size, or its read-only status) and base the menu item on that information as well.
Finalmente, se você quiser provar que o arquivo está sendo realmente lido pela DLL de extensão do shell do WinRAR (já que você parece duvidar), aqui estão as várias chamadas ReadFile registradas por Monitor de Processos simplesmente clicando com o botão direito do mouse em um WinRAR SFX:
(Onomedoprocessoéexibidocomoexplorer.exeenãocomorarext.dll,porqueomanipuladordomenudecontextoéumobjetoCOM"em processo" que o shell carrega diretamente no espaço de memória do explorer.exe para execução.)
Como você pode ver, ele lê os primeiros 7 bytes para confirmar que é um EXE:
Depoisdelermaisdados(semdúvidaparaobtereanalisarocabeçalho),elelê7bytesdodeslocamento101.376paraconfirmarqueéumWinRARSFXenãoapenasqualquerEXEantigo:
Isso solicita a inclusão de várias entradas do menu de contexto, como Abrir com o WinRAR, Extrair com o WinRAR e assim por diante, que não são adicionadas para EXEs "normais".
Além disso, na caixa de diálogo Configurações do WinRAR há uma opção chamada Onde verificar arquivos SFX :
Vejaoqueoarquivodeajudatemadizersobreisso:
"Where to check for SFX archives" options control processing of SFX archives in context menus. Checking contents of executable file and detecting if it is a self-extracting (SFX) archive introduces some delay when right clicking every ".exe" file, because WinRAR needs to read and analyze file data to find out if it is SFX. While such delay is negligible for fast local hard drives, it can be noticeable in case of slow network disks. This group of options allows to enable or disable SFX processing for local hard disks, network disks and other disks like CD-ROM and USB separately. If you turn these options off, you will not see all SFX related context menu items when right clicking SFX archive. So disable these options only if you really experience delays when right clicking ".exe" files.
Espero que isso coloque suas dúvidas em paz. :) Quanto à sua segunda pergunta sobre se as extensões têm "menos importância" agora e não têm "qualquer influência no menu de contexto [s]", não entendo o que você quer dizer. Mesmo as miniaturas de imagem / vídeo são geradas pelos manipuladores de extensão do shell (DLLs). Uma lista de diferentes manipuladores pode ser encontrada aqui . Como você pode ver, é possível ter manipuladores de extensão de shell personalizados para tudo, desde menus de atalho, arrastar & operações de soltar, ícones, sobreposições de ícones, folhas de propriedades, miniaturas, infotips, metadados, colunas do Explorer, diálogos de cópia / movimentação / exclusão / renomeação, pesquisa ...
Editar: Coincidentemente, Raymond Chen postou um artigo sobre extensões de shell hoje também (não se esqueça de ler o anterior também.