Pergunta

UnhandledException: System.ComponentModel.Win32Exception: No application is associated with the specified file for this operation
   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(String fileName)

Oi pessoal,

Estou recebendo a seguinte exceção em uma máquina em que estou testando ao tentar usar o processo.start para abrir um arquivo .csv. Eu acho que isso está acontecendo porque nenhuma associação de arquivos foi definida para arquivos .csv nesta caixa.

Então, como você evitaria essa situação?

Forçar o processo. Iniciar a abrir no bloco de notas? - Idealmente, ele deve ser aberto no Excel, mas o que você faz se o Excel não existir nesse computador?

Obrigado

Foi útil?

Solução

Se o seu aplicativo depende da instalação do Excel para funcionar de forma correta e eficaz, entre no usuário. Pegue a exceção e faça uma notificação para contar a eles sobre o problema, mas nessa notificação dê a eles a opção de abri -la em um editor alternativo, como o Notepad.

Tudo isso se resume ao bom UX - diga ao usuário, mas faça -o de tal maneira que você os esteja capacitando oferecendo opções para continuar, em vez de apenas atrapalhar e parar quando ocorre um pequeno problema como esse.

Editar: Faça exatamente o que você está fazendo - não assuma que eles têm excel, eles podem ter outro espectador/editor como o OpenOffice. Tudo o que está registrado no CSV, deixe fazer isso. Não tente verificar a associação de arquivos, seu aplicativo pode não (provavelmente não terá) privilégios suficientes para se divertir no registro.

Você também precisa verificar outras razões óbvias para exceções, como o usuário não tem direitos para abrir o arquivo de destino, isso pode ser devido a restrições colocadas na pasta ou no próprio arquivo. Talvez o arquivo esteja bloqueado porque ainda está aberto em outro processo. Há várias razões pelas quais seu processo.

Pegue a exceção e, se a causa não for aplicada associada ao arquivo, ofereça -lhes a opção. Se o usuário optar por usar o bloco de notas, tente abrir o arquivo no bloco de notas, mas ainda observe as exceções. O notepad é uma boa opção, ele não segura um bloqueio no arquivo, mas ainda está sujeito a ACLs de pasta/arquivo.

Outras dicas

Se você definir o ProcessstartInfo.errordialog = true, o usuário será rápido com uma caixa de diálogo Windows padrão: consulte aqui

Leia o registro para ver se existe um programa associado à extensão do arquivo antes de fazer o processo. Olhar dentro HKEY_CLASSES_ROOT\.csv Para ver quem está registrado para lidar com essa extensão de arquivo, se houver.

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