Todas as informações de associação de extensão de arquivo são armazenadas no registro. E se você navegar um pouco, não é terrivelmente difícil descobrir como as coisas funcionam. Para associações em toda a máquina, tudo acontece na raiz do HKEY_CLASSES_ROOT . A edição manual desse material oferece o máximo de poder sobre as extensões de arquivo (ainda que entediantes). Basta criar um backup, caso você estrague tudo e queira reverter.
Cada associação de arquivo possui uma subchave chamada .xyz, em que xyz é a extensão do seu arquivo. O valor (Padrão) para essa chave é definido como uma sequência arbitrária. A maioria dos aplicativos que registram extensões de arquivo o define como algo legível por humanos. Por exemplo, .pdf no meu sistema está definido como FoxitReader.Document . Existem muitos outros valores nessa chave, mas nada é obrigatório, exceto o valor (Padrão).
Para qualquer que seja o valor (Padrão) definido, haverá uma subchave correspondente com o mesmo nome também na raiz de HKEY_CLASSES_ROOT. O valor (padrão) dessa chave é essencialmente o "nome amigável" do tipo de arquivo. Essa chave também pode ter muitas subchaves, mas as únicas em que estamos interessados são DefaultIcon e Shell .
O DefaultIcon, como você provavelmente adivinhou, controla o ícone para esse tipo de arquivo. O valor (padrão) dessa chave deve ser definido como o caminho do arquivo de ícone. Ou, se o ícone estiver em um arquivo .exe, defina-o como o caminho do .exe e inclua uma vírgula e o índice do ícone no final do caminho. Por exemplo, o FoxitReader.Document DefaultIcon está definido como
C:\PROGRA~1\FOXITS~1\FOXITR~1\FOXITR~1.EXE,1
Shell é onde você configura todas as "ações" para esse tipo de arquivo. Para cada ação que você deseja definir, crie uma subchave chamada como você deseja nomear a ação. A maioria dos tipos tem pelo menos uma ação chamada aberta . Dentro da subchave dessa nova ação, crie uma subchave chamada Command . O valor (Padrão) dessa chave de comando é basicamente a linha de comando que é executada quando essa ação é clicada / executada. Por exemplo, o comando aberto em um FoxitReader.Document é
"C:\PROGRA~1\FOXITS~1\FOXITR~1\FOXITR~1.EXE" "%1"
O argumento "% 1" é definido como o caminho do arquivo do qual você executou a ação.
Se você tiver apenas uma ação definida para um determinado tipo de arquivo, acredito que será a ação padrão executada se o arquivo for clicado duas vezes. Se houver várias ações possíveis, você poderá definir qual será o padrão, modificando o valor (Padrão) da chave do Shell . Basta defini-lo com o nome da ação que você deseja que seja o padrão.
Com tudo isso dito, não é muito eficiente fazer tudo do zero. Provavelmente é mais fácil usar as ferramentas integradas para chegar até o fim e apenas ajustar manualmente as coisas que as ferramentas não permitem. Também devo mencionar que todas essas informações são baseadas no XP, mas tenho quase certeza de que nenhuma delas foi alterada para o Vista ou o Win7.