Domanda

Ho alcune domande relative:

1) È possibile fare in modo che il mio programma cambi l'associazione del tipo di file, ma solo quando è in esecuzione? Vedi qualcosa di sbagliato in questo comportamento?

2) L'altra opzione che sto vedendo è quella di consentire agli utenti di decidere di aprire con la mia applicazione o ripristinare l'associazione predefinita ... qualcosa come: " catturare tutti i file .lala " o "ripristinare l'associazione .lala". Come posso fare questo? Quale pensi sia l'approccio migliore?

È stato utile?

Soluzione

Per quanto riguarda le associazioni di file, ho scritto in precedenza una risposta che almeno copre il " How " .

Questo dovrebbe anche indirizzarti nella giusta direzione su come gestire il backup e il ripristino. Con l'accesso diretto al registro tramite c #, non sarà necessario utilizzare i file .reg, quindi sei libero di eseguire il backup del valore precedente come preferisci nella tua app e ripristinarlo da lì.

La domanda chiave qui è: Dovresti cambiare casualmente le associazioni di file? Almeno chiedere all'utente in anticipo sarebbe ovviamente necessario (come hai anche indicato).

Inoltre, gli utenti Vista con UAC abilitato o gli utenti non privilegiati di altre versioni di Windows potrebbero non disporre dell'autorizzazione necessaria per modificare le associazioni di file globali. La (dis) procedura di installazione del tuo programma potrebbe essere l'unico posto in cui ciò può avere successo.

Modifica

Come Franci Penov indicato nella sua risposta , è un modo per cambiare le associazioni di file locali in base all'utente, anche per i non amministratori (ecco perché ho parlato di "associazioni globali" nel paragrafo precedente). Ha anche menzionato il motivo per cui andare lì non è eccessivamente consigliabile.

Altri suggerimenti

Puoi implementare un " al volo " la modifica dell'associazione di file associando un piccolo eseguibile a quell'estensione di file che all'avvio verificherà se l'applicazione principale è in esecuzione e gli passerà il nome del file o se non è in esecuzione invocherà il "normale" applicazione associata.

Il vantaggio principale di questo approccio è che devi confondere con il registro una sola volta.

Gli svantaggi principali di questo approccio sono:

  • hai bisogno di un processo di supporto
  • l'applicazione che " possiede " queste estensioni di file sono in grado di rilevare la modifica e lamentarsi per l'utente, richiedendo "riparazione" tirandoti così fuori dalla scena.

In alternativa, è possibile modificare l'associazione dei file all'avvio del programma principale. Questo funzionerà anche per utenti non amministratori. mentre le associazioni di file sono memorizzate in HKEY_CLASSES_ROOT , c'è un piccolo trucco: HKCR è in realtà una mappa di HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes e HKEY_CURRENT_USER \ SOFTWARE \ Classes . Pertanto, puoi registrare temporaneamente l'estensione del file per l'utente corrente in HKCU e " shadow " l'associazione originale di HKLM.

Ovviamente, sconsiglioi questo approccio, dato che è necessario solo un arresto anomalo nell'applicazione per rendere permanente tale associazione e poiché pochissime applicazioni sanno come gestire le associazioni di file in HKCU, è probabile che sarà un situazione irrecuperabile per l'applicazione originale.

Probabilmente si può fare ma penso che finirebbe per essere ingombrante. Tutte le associazioni di tipi di file sono archiviate nel registro, pertanto è necessario scrivere / ripristinare le voci del registro ogni volta che l'app viene avviata e arrestata. Inoltre, a seconda della frequenza con cui lo fai, le nuove associazioni potrebbero non essere rilevate immediatamente in Windows Explorer.

Le associazioni sono elencate sotto HKEY_CLASSES_ROOT nel registro e possono essere mappate in una miriade di modi (tipi mime / progID / etc).

Molte app che ho visto chiedono se si desidera associare determinati tipi di file all'applicazione durante l'installazione e offrire la possibilità di annullare la sottoscrizione e lasciare le impostazioni correnti.

Non credo che consiglierei " al volo " associazioni dei tipi di file

1) si arriva a definire i tipi di file che si trovano nella lista a discesa dei tipi di file di Open Dialog. A parte ciò, è possibile modificare il tipo di file predefinito all'apertura dell'applicazione, quindi sostituirlo durante la chiusura dell'applicazione, poiché l'associazione del tipo di file è solo un'impostazione del registro.

Per quanto riguarda il torto, non lo farei. La prima ragione è che non è il comportamento standard delle applicazioni. Il secondo motivo è che se l'applicazione o il PC si chiudono inaspettatamente, si corre il rischio di non riportare l'associazione alle impostazioni originali.

2) Windows per impostazione predefinita consente all'utente di scegliere queste opzioni utilizzando il tasto destro del mouse e l'opzione " apri con " comando.

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