Associando estensioni di file con un programma

Ho capito come farlo, e sono stato a http://www.codeproject.com/KB/vb/VBFileAssociation.aspx prima. La mia domanda riguarda cosa fare, è ansible 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, è ansible dire se il file è già stato associato, è un problema da provare e riassociare? Infine, come puoi impostare il file .ico che usa?

Grazie per l’aiuto, non so quasi nulla del registro e mi confonde lol …

Per brevità, sto usando una falsa chiave di root. In pratica, sostituisci Hive_Key con HKEY_LOCAL_MACHINE per le impostazioni predefinite del sistema o HKEY_CURRENT_USER per le impostazioni per utente. È ansible 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 lanciato, così come altri dettagli sul tipo di file, si trovano nel tipo di file. I tipi di file sono indicati da ciò che viene definito ProgID (abbreviazione di “Identificatore programmatico”, che è una versione più facilmente leggibile di un identificatore di class). 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 potrebbe 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 quella voce di menu contestuale. 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 sono Verbs . Per il nostro esempio, un verbo che apre il file con Blocco note sarà simile a questo: 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 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.

Hai chiesto come controllare questa roba, e questo può essere fatto prima ispezionando il valore predefinito della chiave di estensione per ottenere il ProgID, quindi ispezionando la sottochiave della shell della chiave ProgID per ottenere il verbo predefinito, quindi ispezionando \shell\verb\command per 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 funzioni.

Inoltre, quanto sopra è tutto valido se la particolare estensione non è sotto il controllo di un programma impostato come predefinito (Programmi predefiniti) nel Pannello di controllo. È ansible 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 .