Come ottenere il nome del programma associato ad una estensione
Questo sistema non è utile a chi usa normalmente il PC perché, per ottenere il nome del programma associato ad una estensione, con un po' di click o con qualche programmino adatto lo può fare senza problemi.
Invece, se si realizza un programma e all'interno di questo programma si ha la necessità di conoscere quale è l'eseguibile associato ad una determinata estensione la cosa diventa decisamente più complicata.
Ecco il procedimento:
Le estensioni sono memorizzate nel registro, sotto la chiave HKEY_CLASSES_ROOT\estensione, dove "estensione" rappresenta appunto il nome di ogni estensione, per esempio ".doc"; in questo caso sarebbe HKEY_CLASSES_ROOT\.doc; il valore di default di questa chiave contiene una descrizione di classe del programma; in questo caso sarebbe "Word.Document.8".
Poi, la chiave HKEY_CLASSES_ROOT\classe contiene varie caratteristiche fra le quali altre sottochiavi che permettono di conoscere il programma eseguibile associato all'estensione; continuando con l'esempio, la chiave HKEY_CLASSES_ROOT\Word.Document.8 deve contenere una sottochiave di nome "shell"; questa a sua volta deve contenere altre sottochiavi, tra le quali quelle che interessano sono, in ordine di utilità ed interesse "Play", "Open" ed "Edit"; non sempre sono presenti tutte ma almeno una deve essere presente.
All'interno di ognuna di quelle chiavi ci deve essere una sottochiave di nome "Command" il cui valore di default contiene esattamente la riga di comando da utilizzare per chiamare il programma e leggere un file con l'estensione definita; continuando nell'esempio precedente, la chiave HKEY_CLASSES_ROOT\Word.Document.8\shell\open\comma nd contiene come valore di default "C:\Programmi\Microsoft Office\OFFICE11\WINWORD.EXE" /n /dde".
Ho realizzato anche un programmino script che esegue tutta questa procedura, è realizzato in linguaggio WinBatch che so benissimo essere molto poco conosciuto ma è un ottimo linguaggio; se interessa lo posso spedire.