Come si aggiunge la mia applicazione nell’elenco Programmi predefiniti di Windows Vista / 7?

Così tanti programmi presentano un elenco di possibili estensioni e protocolli sotto l’applet del pannello di controllo “Programmi predefiniti”. “Imposta Programmi Predefiniti”, più precisamente. (Vista e 7)
Desidero aggiungere i miei programmi in quella lista e impostare alcune estensioni che può gestire.

Un’altra cosa. Il mio programma supporta gli addon per l’apertura di più file, in modo che la lista dovrebbe essere dynamic (posso aggiungere più estensioni o protocolli in qualsiasi momento)

A proposito, sì, lo so, questa non è esattamente una domanda di programmazione. Sarebbe la mia modesta ipotesi che si tratta di una domanda di registro. Quindi UAC non sarà un problema!

Le chiavi di registro necessarie per registrare l’applicazione con l’interfaccia utente dei programmi predefiniti sono documentate su MSDN (parte della Guida per gli sviluppatori di Shell )

OK, quindi dopo un lungo lavoro e una ricerca lunga del registro di mezz’ora, ho scoperto che devo registrare le mie capacità applicative e quindi registrare la mia applicazione.

Per gli altri, analizza i valori in questa chiave:

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications 

Ecco quello che uso per associare principalmente i file video con Media Player Classic (Gabest) in Windows 7:

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Media\Media Player Classic (Gabest)] [HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Media\Media Player Classic (Gabest)\Capabilities] "ApplicationDescription"="One of the most powerful, configurable multimedia players for Windows operating system, made by a Hungarian developer known as Gabest." "ApplicationIcon"="C:\\Program Files\\mplayerc.exe,0" "ApplicationName"="Media Player Classic (Gabest)" [HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Media\Media Player Classic (Gabest)\Capabilities\FileAssociations] ".avi"="mpc.avi" ".mpg"="mpc.mpg" ".mpeg"="mpc.mpeg" ".mpe"="mpc.mpe" ".m1v"="mpc.m1v" ".m2v"="mpc.m2v" ".mpv2"="mpc.mpv2" ".mp2v"="mpc.mp2v" ".pva"="mpc.pva" ".evo"="mpc.evo" ".m2p"="mpc.m2p" ".ts"="mpc.ts" ".tp"="mpc.tp" ".trp"="mpc.trp" ".m2t"="mpc.m2t" ".m2ts"="mpc.m2ts" ".mts"="mpc.mts" ".rec"="mpc.rec" ".vob"="mpc.vob" ".ifo"="mpc.ifo" ".mkv"="mpc.mkv" ".webm"="mpc.webm" ".mp4"="mpc.mp4" ".m4v"="mpc.m4v" ".mp4v"="mpc.mp4v" ".mpv4"="mpc.mpv4" ".hdmov"="mpc.hdmov" ".mov"="mpc.mov" ".3gp"="mpc.3gp" ".3gpp"="mpc.3gpp" ".3ga"="mpc.3ga" ".3g2"="mpc.3g2" ".3gp2"="mpc.3gp2" ".flv"="mpc.flv" ".f4v"="mpc.f4v" ".ogm"="mpc.ogm" ".ogv"="mpc.ogv" ".rm"="mpc.rm" ".ram"="mpc.ram" ".rmm"="mpc.rmm" ".rt"="mpc.rt" ".rp"="mpc.rp" ".smi"="mpc.smi" ".smil"="mpc.smil" ".wmv"="mpc.wmv" ".wmp"="mpc.wmp" ".wm"="mpc.wm" ".asf"="mpc.asf" ".smk"="mpc.smk" ".bik"="mpc.bik" ".fli"="mpc.fli" ".flc"="mpc.flc" ".flic"="mpc.flic" ".dsm"="mpc.dsm" ".dsv"="mpc.dsv" ".dsa"="mpc.dsa" ".dss"="mpc.dss" ".ivf"="mpc.ivf" ".d2v"="mpc.d2v" ".swf"="mpc.swf" ".divx"="mpc.divx" ".rmvb"="mpc.rmvb" ".amv"="mpc.amv" ".dts"="mpc.dts" ".aif"="mpc.aif" ".aifc"="mpc.aifc" ".aiff"="mpc.aiff" ".alac"="mpc.alac" ".amr"="mpc.amr" ".apl"="mpc.apl" ".au"="mpc.au" ".snd"="mpc.snd" ".m4r"="mpc.m4r" ".mka"="mpc.mka" ".mpa"="mpc.mpa" ".m1a"="mpc.m1a" ".m2a"="mpc.m2a" ".ra"="mpc.ra" ".aob"="mpc.aob" ".mlp"="mpc.mlp" ".wvx"="mpc.wvx" ".wmx"="mpc.wmx" ".mpcpl"="mpc.mpcpl" ".mpls"="mpc.mpls" ".bdmv"="mpc.bdmv" [HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications] "Media Player Classic (Gabest)"="SOFTWARE\\Clients\\Media\\Media Player Classic (Gabest)\\Capabilities" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\mplayerc.exe\SupportedTypes] ".avi"="" ".mpg"="" ".mpeg"="" ".mpe"="" ".m1v"="" ".m2v"="" ".mpv2"="" ".mp2v"="" ".pva"="" ".evo"="" ".m2p"="" ".ts"="" ".tp"="" ".trp"="" ".m2t"="" ".m2ts"="" ".mts"="" ".rec"="" ".vob"="" ".ifo"="" ".mkv"="" ".webm"="" ".mp4"="" ".m4v"="" ".mp4v"="" ".mpv4"="" ".hdmov"="" ".mov"="" ".3gp"="" ".3gpp"="" ".3ga"="" ".3g2"="" ".3gp2"="" ".flv"="" ".f4v"="" ".ogm"="" ".ogv"="" ".rm"="" ".ram"="" ".rmm"="" ".rt"="" ".rp"="" ".smi"="" ".smil"="" ".wmv"="" ".wmp"="" ".wm"="" ".asf"="" ".smk"="" ".bik"="" ".fli"="" ".flc"="" ".flic"="" ".dsm"="" ".dsv"="" ".dsa"="" ".dss"="" ".ivf"="" ".d2v"="" ".swf"="" ".divx"="" ".rmvb"="" ".amv"="" ".ac3"="" ".dts"="" ".aif"="" ".aifc"="" ".aiff"="" ".alac"="" ".amr"="" ".ape"="" ".apl"="" ".au"="" ".snd"="" ".cda"="" ".flac"="" ".m4a"="" ".m4b"="" ".m4r"="" ".aac"="" ".mid"="" ".midi"="" ".rmi"="" ".mka"="" ".mp3"="" ".mpa"="" ".mp2"="" ".m1a"="" ".m2a"="" ".mpc"="" ".ofr"="" ".ofs"="" ".ogg"="" ".oga"="" ".opus"="" ".ra"="" ".tak"="" ".tta"="" ".wav"="" ".wma"="" ".wv"="" ".aob"="" ".mlp"="" ".asx"="" ".m3u"="" ".m3u8"="" ".pls"="" ".wvx"="" ".wax"="" ".wmx"="" ".mpcpl"="" ".mpls"="" ".bdmv"="" [HKEY_CLASSES_ROOT\mpc.3g2] @="3G2" "EditFlags"=dword:00000000 "FriendlyTypeName"="3G2" [HKEY_CLASSES_ROOT\mpc.3g2\CurVer] @="mpc.3g2" [HKEY_CLASSES_ROOT\mpc.3g2\shell] @="open" [HKEY_CLASSES_ROOT\mpc.3g2\shell\open] [HKEY_CLASSES_ROOT\mpc.3g2\shell\open\command] @="\"C:\\Program Files\\mplayerc.exe\" \"%1\"" [HKEY_CLASSES_ROOT\mpc.3ga] @="3GA" "EditFlags"=dword:00000000 "FriendlyTypeName"="3GA" [HKEY_CLASSES_ROOT\mpc.3ga\CurVer] @="mpc.3ga" [HKEY_CLASSES_ROOT\mpc.3ga\shell] @="open" [HKEY_CLASSES_ROOT\mpc.3ga\shell\open] [HKEY_CLASSES_ROOT\mpc.3ga\shell\open\command] @="\"C:\\Program Files\\mplayerc.exe\" \"%1\"" [HKEY_CLASSES_ROOT\mpc.3gp] @="3GP" "EditFlags"=dword:00000000 "FriendlyTypeName"="3GP" [HKEY_CLASSES_ROOT\mpc.3gp\CurVer] @="mpc.3gp" [HKEY_CLASSES_ROOT\mpc.3gp\shell] @="open" [HKEY_CLASSES_ROOT\mpc.3gp\shell\open] [HKEY_CLASSES_ROOT\mpc.3gp\shell\open\command] @="\"C:\\Program Files\\mplayerc.exe\" \"%1\"" [HKEY_CLASSES_ROOT\mpc.3gp2] @="3GP2" "EditFlags"=dword:00000000 "FriendlyTypeName"="3GP2" [HKEY_CLASSES_ROOT\mpc.3gp2\CurVer] @="mpc.3gp2" [HKEY_CLASSES_ROOT\mpc.3gp2\shell] @="open" [HKEY_CLASSES_ROOT\mpc.3gp2\shell\open] [HKEY_CLASSES_ROOT\mpc.3gp2\shell\open\command] @="\"C:\\Program Files\\mplayerc.exe\" \"%1\"" [HKEY_CLASSES_ROOT\mpc.3gpp] @="3GPP" "EditFlags"=dword:00000000 "FriendlyTypeName"="3GPP" [HKEY_CLASSES_ROOT\mpc.3gpp\CurVer] @="mpc.3gpp" [HKEY_CLASSES_ROOT\mpc.3gpp\shell] @="open" [HKEY_CLASSES_ROOT\mpc.3gpp\shell\open] [HKEY_CLASSES_ROOT\mpc.3gpp\shell\open\command] @="\"C:\\Program Files\\mplayerc.exe\" \"%1\"" 

………………. segue …………

Versione completa qui: http://pastebin.com/BinZdHVU

Lo farai come parte del processo di installazione della tua applicazione. Se utilizzi WIX, puoi configurare la seguente risposta in questa domanda :

Se vuoi farlo attraverso il codice, controlla il seguente articolo . È scritto usando VB.Net, ma il codice è piuttosto semplice e può essere facilmente tradotto in C #.