PDA

View Full Version : Aggiungere una voce al menu contestuale di una specifica estensione


Trial4life
05-02-2014, 17:20
Ciao a tutti,
sto creando l'installer di un programma, ma sto avendo problemi nell'aggiungere le chiavi al registro di sistema.
In particolare, ho bisogno di aggiungere una voce al menu contestuale di tutti i file .jpg.
Sul mio PC ci sono riuscito tranquillamente, mi è bastato aggiungere le chiavi
HKEY_CLASSES_ROOT\jpegfile\shell\<Nome voce>
HKEY_CLASSES_ROOT\jpegfile\shell\<Nome voce>\command
e la voce compare nel menu senza problemi.

Il vero problema è che la chiave "jpegfile" non è sempre associata all'estensione ".jpg", dato che qualsiasi programma installato precedentemente può aver modificato questo valore a suo piacimento (ad esempio nel computer di un mio amico la chiave associata era "FastStone.jpg" invece di "jpegfile", quindi avrei dovuto mettere la voce nella relativa chiave "FastStone.jpg").

Ovviamente l'installer deve riuscire a fare tutto da solo... sto usando Advanced Installer, esiste un modo per fargli rilevare la chiave associata all'estensione ".jpg" nel sistema operativo in uso? Altrimenti c'è un modo alternativo per creare la voce, magari inserendo la chiave in un altro percorso del registro, che sia associato all'estensione .jpg a prescindere da qualsiasi altra modifica nel registro?

x_Master_x
06-02-2014, 08:49
Prova a creare la chiave in questo percorso:
HKEY_CURRENT_USER\Software\Classes\...\shell\open\command

Viene usato anche da Windows quando selezioni con "Apri con" un programma predefinito ( es. jpeg_auto_file - txt_auto_file etc. )

Trial4life
06-02-2014, 09:44
Mmh... credo che la soluzione sia proprio lì.

Ho dovuto creare 2 chiavi: una ".jpg", contente il valore stringa "jpeg_auto_file", e un'altra "jpeg_auto_file", contente la sottochiave "shell\<Nome comando>\command".

La voce nel menu contestuale si è creata, però ora c'è un altro problema: le altre voci associate ai jpg sono scomparse (ne avevo altre 3). Quindi è evidente che c'è bisogno di reindirizzare la nuova chiave creata all'estensione .jpg in HKEY_CLASSES_ROOT. È possibile farlo?

Intanto ecco come appare il menu contestuale dopo la modifica:

http://i58.tinypic.com/2ccxtox.png

Trial4life
06-02-2014, 23:07
Credo di averla trovata!
HKEY_CURRENT_USER\Software\Classes\SystemFileAssociations\.jpg\shell\<NOME VOCE>

Sono arrivato a questo percorso grazie al programma "Default Programs Editor", che è in grado di gestire i menu contestuali (come aggiungere una voce al menu contestuale di una determinata estensione), e di salvare anche in formato .reg i cambiamenti apportati.