Como posso associar vários tipos de menu de contexto para uma extensão de arquivo no registro?

5

Eu quero adicionar opções de menu de contexto personalizadas para determinadas extensões de arquivo (como arquivos .zip) para um programa que estou desenvolvendo. No entanto, em muitos PCs (mas não em todos), meu software também será instalado no 7-Zip e, portanto, [HKEY_CLASSES_ROOT.zip] está se referindo a [HKEY_CLASSES_ROOT \ 7-Zip.zip] no registro.

Como eu não quero mexer com a instalação original do 7-Zip, eu só quero adicionar minhas opções de menu de contexto no topo. No entanto entradas em [HKEY_CLASSES_ROOT.zip \ shell] são sem efeito e eu não sei como eu poderia link [HKEY_CLASSES_ROOT.zip] para [HKEY_CLASSES_ROOT \ MyApp.zip] porque o valor padrão de [HKEY_CLASSES_ROOT.zip] já está sendo usado por 7-Zip.

Qualquer ajuda seria muito apreciada:)

    
por Sebastian 09.09.2013 / 18:30

3 respostas

1

Se os arquivos .zip forem sua única preocupação, você pode usar com segurança a chave [HKEY_CLASSES_ROOT\CompressedFolder] .

Isso ocorre porque o Windows usa nativamente essa chave para sua funcionalidade .zip e os produtos de software de terceiros (incluindo o 7zip) tendem a compartilhar essa chave com a Microsoft. Ele permite que os desenvolvedores adicionem sua própria funcionalidade enquanto preserva a manipulação nativa do Windows como "pasta" dos arquivos .zip .

É estranho, porém, que o valor padrão [HKEY_CLASSES_ROOT\.zip] se refira a [HKEY_CLASSES_ROOT-Zip.zip] . Ainda é possível que até mesmo as versões antigas definam as entradas [HKEY_CLASSES_ROOT\CompressedFolder] corretas - você teria que verificar.

    
por 30.01.2014 / 18:54
0

Pelo que eu observo no meu computador, você pode "seqüestrar" com segurança a extensão .zip .

Eu instalei o WinZip antes do 7Zip, então foi o WinZip que assumiu a extensão .zip , enquanto 7Zip o deixou estritamente sozinho.

No entanto, 7Zip ainda funciona perfeitamente para mim por .zip arquivos, porque também instala uma extensão geral para todos os tipos de arquivo que captura .zip arquivos (entre outros).

Na verdade, na minha opinião, 7Zip assumindo também a extensão .zip é um exagero.

    
por 28.01.2014 / 11:42
-3

Ok, vou tentar dizer isso da maneira mais fácil. Primeiro, no HKCR, crie uma chave para o seu programa. (Dica, apenas copie e renomeie um ..) Ele precisa ter no mínimo 3 partes. CFG.File \ shell \ Open \ command (Padrão) "% 1"

Os 3 são: ProgID No meu exemplo é CFG.File Ação No meu exemplo, é um comando Shell para abrir (e você adiciona "% 1" para incluir seu objeto)

Em seguida, você precisa criar, se não existir, essa chave no tipo de arquivo OpenWithProgids agora aqui vai uma dica: crie também uma chave off OpenWithProgids, chamada Shared

A chave Shared diz ao Windows para não permitir que nenhum ProgID ganhe controle ou se torne Padrão.

Agora, tudo que você precisa é adicionar seu ProgID que você fez no HKCR. Adicione seu nome a OpenWithProgids Você pode escolher: uma entrada binária ou a cadeia singular. Você só precisa nomeá-lo e nenhum valor.

Eu não cobri todas as opções para a interface do usuário e Eye Candy, mas devo adicionar isso como um pensamento final: se o tipo de arquivo ou qualquer tecla tiver uma entrada EditFlags - renomeie ou suas modificações nunca serão exibidas. .

Ah, uma última dica: se você está tendo problemas para tentar alterar um ícone de tipo de arquivo, dê uma olhada na chave ShellEx e veja se ela tem uma chave DefaultIcon lá. Esses tipos de arquivos são protegidos pelo Windows. Se você modificar ou remover a entrada, o Windows irá redefini-la a cada reinicialização. (A menos que você obtenha a propriedade da chave inteira, em seguida, Negue TI e acesso ao Sistema para Alterar Proprietário ou Alterar Permissões.

Boa sorte senhor !!

    
por 16.12.2017 / 07:42