Pergunta

Eu tenho algumas perguntas relacionadas:

1) é possível fazer a minha associação filetype mudança de programa, mas somente quando está em execução? Você vê nada de errado com esse comportamento?

2) A outra opção que eu estou vendo é permitir que os usuários decidir abrir com meu aplicativo ou restaurar associação padrão ... algo como: "capturar todos os arquivos .lala" ou "restaurar .lala associação". Como posso fazer isso? O que você acha que é a melhor abordagem?

Foi útil?

Solução

Em relação associações de arquivo, eu escrevi uma resposta mais cedo que pelo menos abrange o "como" .

Isso também deve apontar para a direção certa como lidar com backup e restauração. Com acesso ao registro direto através c #, não haverá necessidade de arquivos de uso reg, então você é livre para fazer o backup o valor anterior no entanto você gosta em seu aplicativo, e também restaurá-lo de lá.

A questão chave aqui é: deve de alterar associações de arquivo aleatoriamente? Pelo menos perguntando ao usuário up-front, obviamente, seria necessário (como você também indicado).

Além disso, os usuários do Vista com UAC ativado, ou os usuários não-privilegiados de outras versões do Windows pode não ter a permissão necessária para alterar associações de arquivo globais. O procedimento de instalação (un) do seu programa pode ser o único lugar onde isso pode suceder.

Editar

Como Franci Penov indicado na sua resposta , há é uma maneira de mudar as associações de arquivos locais em uma base por utilizador, mesmo para não-administradores (é por isso que eu falei de "associações globais" no parágrafo anterior). Ele também mencionou mencionado por que ir lá não é muito aconselhável.

Outras dicas

Você pode implementar um "on the fly" mudança de associação de arquivos, associando um pequeno executável com essa extensão de arquivo que, ao início irá verificar se o seu aplicativo principal está em execução e passar o nome do arquivo para ele ou se ele não está funcionando ele vai invocar a aplicação associada "regular".

A principal vantagem dessa abordagem é que você precisa para mexer com o registro apenas uma vez.

As principais desvantagens desta abordagem são:

  • você precisa de um processo de helper
  • o aplicativo que "possui" essas extensões de arquivo pode detectar a mudança e reclamar com o usuário, solicitando "reparação" assim você ficar fora da imagem.

Como alternativa, você pode alterar a associação de arquivo em cima de seu principal início do programa. Isto irá funcionar, mesmo para usuários não-administradores. enquanto as associações de arquivos são armazenados em HKEY_CLASSES_ROOT, há um pequeno truque - HKCR é na verdade um mapa de ambos HKEY_LOCAL_MACHINE\SOFTWARE\Classes e HKEY_CURRENT_USER\SOFTWARE\Classes. Assim, você pode registrar temporariamente a extensão do arquivo para o usuário atual em HKCU e "sombra" a associação original a partir HKLM.

É claro que gostaria de aconselhar contra esta abordagem, porém, que leva apenas um acidente em seu aplicativo para fazer essa associação permanente e desde muito poucas aplicações sabe como lidar com as associações de arquivos em HKCU, as chances são de que vai ser um situação irrecuperável para o aplicativo original.

Provavelmente, pode ser feito, mas eu acho que iria acabar por ser pesado. Todas as associações de tipo de arquivo são armazenadas no Registro para que você teria que escrever / revert Registro entradas cada vez que seus aplicativos arranques e paragens. Além disso, dependendo da freqüência com que você fazê-lo as novas associações podem não ser pego no Windows Explorer imediatamente.

As associações estão listadas em HKEY_CLASSES_ROOT no registro e pode ser mapeada toda uma miríade de formas (mime tipos / ProgIds / etc).

Muitos aplicativos que tenho visto perguntar se você deseja associar certos tipos de arquivos com o aplicativo durante a instalação tempo, e dar-lhe a capacidade de opt-out e deixar as configurações atuais.

Eu não acho que eu recomendo "on the fly" associações de tipo de arquivo

1) você começa a definir os tipos de arquivos que estão no diálogo Abrir tipo de arquivo dropList. Fora isso, é possível para alterar o padrão filetype no aplicativo aberto, e em seguida, substituir durante a aplicação perto, como tipo de arquivo associação são apenas uma configuração de registro.

Quanto errado, eu não faria. A primeira razão é que não é o comportamento padrão de aplicações. A segunda razão é que, se sua aplicação ou PC fecha inesperadamente, você corre o risco de não voltar a associação a ele de configuração original.

2) do Windows por padrão permite ao usuário escolher estas opções utilizando o botão direito do mouse e do "abrir com" comando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top