Domanda

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)

Ciao a tutti,

Sto ottenendo il seguente eccezione su una macchina che sto testando su quando si cerca di utilizzare Process.Start per aprire un file .csv. Credo che questo sta accadendo perché nessuno associazione di file è stato fissato per .csv file su questa casella.

Quindi, come si potrebbe evitare questa situazione?

Forza del Process.Start per aprire in Blocco note? -? Idealmente dovrebbe essere aperto in Excel, ma cosa fare se excel quindi non esiste su quel computer

Grazie

È stato utile?

Soluzione

Se la vostra applicazione dipende da Excel in fase di installazione per funzionare correttamente e in modo efficace, quindi l'utente bug su di esso. Intercettare l'eccezione, e pop-up una notifica di raccontare loro il problema, ma poi che la notifica dare loro la possibilità di aprirlo in un editor alternativa come blocco note.

Questo tutto si riduce a buon UX - dice l'utente, ma farlo in modo tale che li autorizzate gli opzioni che offre per continuare, piuttosto che entrare nel loro modo e fermandosi quando si verifica un piccolo problema del genere.

Modifica fare esattamente quello che state facendo - non date per scontato che essi hanno di Excel, si può avere qualche altra viewer / editor come OpenOffice. Tutto ciò che è registrato per csv, lasciar fare è cosa. Non cercare di andare a controllare l'associazione di file da soli, la vostra applicazione non può (probabilmente non) avere privilegi sufficienti per andare in giro fossicking nel Registro di sistema.

È inoltre necessario verificare la presenza di altre ovvie ragioni per le eccezioni, come l'utente non dispone dei diritti per aprire il file di destinazione, questo potrebbe essere a causa di restrizioni sulla cartella o il file stesso. Forse il file è bloccato perché è ancora aperto in un altro processo. Ci sono un sacco di motivi per cui il Process.Start potrebbe fallire.

intercettare l'eccezione, e se la causa è nessuna applicazione associata al file poi loro la possibilità di offrire. Se le sceglie all'utente di utilizzare il Blocco note, cercare di aprire il file in Blocco note, ma ancora guardare fuori per le eccezioni. Notepad è una buona opzione, non in possesso di un blocco sul file, ma è ancora oggetto di ACL di cartelle / file.

Altri suggerimenti

Se si imposta l'ProcessStartInfo.ErrorDialog = true, l'utente sarà pronta con un dialogo standard di Windows: vedi qui

leggere il registro per vedere se c'è un programma associato con l'estensione del file prima di fare il Process.Start. Cerca in HKEY_CLASSES_ROOT\.csv per vedere chi è registrato per gestire estensione del file che, se presente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top