如何在Windows Vista / 7的“默认程序”列表中添加我的应用程序?

如此多的程序在“默认程序”控制面板小程序下提供了可能的扩展和协议列表。 更确切地说,“设置默认PRogram”。 (Vista和7)
我希望在该列表中添加我的程序并设置它可以处理的一些扩展。

还有一件事。 我的程序支持用于打开更多文件的插件,因此列表应该是动态的(我可以随时添加更多扩展甚至协议)

顺便说一下,是的,我知道,这不是一个编程问题。 这是我的谦虚猜测,这是一个注册问题。 所以UAC不会成为问题!

在MSDN ( Shell开发人员指南的一部分 )中记录了使用默认程序UI注册应用程序所需的注册表项。

好的,经过艰苦的工作和半小时的注册表搜索,我发现我必须注册我的应用程序function,然后注册我的应用程序。

对于其他人,请分析此密钥中的值:

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications 

这是我用来将video文件与Windows 7中的Media Player Classic(Gabest)相关联的一个:

 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\"" 

……………….续…………

完整版本: http : //pastebin.com/BinZdHVU

您将在应用程序的安装过程中执行此操作。 如果您使用的是WIX,则可以在此问题中配置以下答案:

如果您确实希望通过代码执行此操作,请查看以下文章 。 它是使用VB.Net编写的,但代码相当简单,可以很容易地转换为C#。