2009-10-12 6 views
7

Ho capito come farlo, e sono stato a http://www.codeproject.com/KB/vb/VBFileAssociation.aspx prima. La mia domanda riguarda cosa fare, è possibile invertire la cosa? Cosa succede se non sai dove sarà il tuo programma e lo stai solo testando per ora? C'è un modo per "trovare" il tuo programma, o un modo semplice per modificare dove viene aperto? Del resto, è possibile dire se il file è già stato associato, è un problema da provare e riassociare? Infine, come puoi impostare il file .ico che usa?Associando estensioni di file con un programma

Grazie per l'aiuto, non so quasi nulla del Registro di sistema e mi confonde lol ...

risposta

17

Per brevità, sto usando una chiave radice falso. In pratica, sostituire Hive_Key con HKEY_LOCAL_MACHINE per le impostazioni predefinite del sistema o HKEY_CURRENT_USER per le impostazioni per utente. È possibile che esista una di queste chiavi o entrambe. Se entrambi esistono, la chiave HKCU ha la precedenza.

Per associare un'estensione a un tipo di file, è necessario impostare il valore predefinito della chiave di estensione (Hive_Key\Software\Classes\.ext) con un tipo di file scelto, impostando il valore di chiave predefinito.

Il vero programma avviato, così come altri dettagli sul tipo di file, si trovano nel tipo di file. I tipi di file sono indicati da quello che viene definito come ProgID (abbreviazione di "Identificatore programmatico", che è una versione più facilmente leggibile di un identificatore di classe). Le chiavi ProgID si trovano in Hive_Key\Software\Classes e un valore di esempio per questa illustrazione potrebbe essere ext_auto_key.

Il ProgID può avere un valore predefinito, che sarà la descrizione descrittiva del tipo di file in Esplora risorse (ad esempio, "Documento di Microsoft Word"). Spetta a te assicurarti di scegliere una descrizione che sia facilmente comprensibile per gli utenti.

Il ProgID può avere una sottochiave, DefaultIcon, che è dove è memorizzata l'icona del tipo di file. Quel percorso dell'icona è il valore predefinito di quella chiave.

Il tasto ProgID può contenere una sottochiave, shell, che conterrà le voci del menu di scelta rapida sui file e il programma richiamato da tale voce di menu di scelta rapida. Simile al valore predefinito del ProgID, il valore predefinito della chiave verb è il testo che verrà visualizzato nel menu di scelta rapida. Il valore predefinito di questa chiave shell ha il nome della chiave verbo predefinito, che è il verbo richiamato quando l'utente fa doppio clic su un file.

Queste voci del menu di scelta rapida sono Verbs. Per il nostro esempio, un verbo che apre il file con Blocco note è simile al seguente: Hive_Key\Software\Classes\ext_auto_file\shell\open\command con valore predefinito notepad.exe %1.

Qui è dove si inserisce il percorso del programma. Se il tuo programma si trova nel sistema PATH, come notepad.exe, non è necessario per specificare il percorso completo. Nel caso più probabile, dovrai specificare il percorso del tuo exe. A scopo di test, puoi semplicemente impostarlo come directory di build.

ti ha chiesto come controllare questa roba, e questo può essere fatto prima ispezionare il valore di default della chiave di estensione per ottenere il ProgID, quindi ispezionare il shell sottochiave della chiave ProgID per ottenere verbo di default, quindi ispezionare \shell\verb\command a avviare il percorso del programma.

Potrebbe essere illuminante aprire regedit.exe e sfogliare quelle chiavi di registro per altri tipi di file per avere un'idea migliore di come tutto funziona.

Inoltre, quanto sopra è tutto valido se l'estensione particolare non è sotto il controllo di un programma impostato come predefinito (Programmi predefiniti) nel Pannello di controllo. È possibile controllare questo stato controllando l'esistenza della chiave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\.EXT\UserChoice. In tal caso, sarà necessario revocare il controllo Programmi predefiniti prima che le personalizzazioni diventino effettive. Questo può essere fatto eliminando quella sottochiave UserChoice.

+0

Regedit mi fa un po 'ridere. Grazie per l'aiuto! – Cyclone