C# 如何将应用程序添加到Windows Vista/7的默认程序列表中?

C# 如何将应用程序添加到Windows Vista/7的默认程序列表中?,c#,.net,windows-7,windows-vista,file-association,C#,.net,Windows 7,Windows Vista,File Association,许多程序都在“默认程序”控制面板小程序下列出了可能的扩展和协议。“设置默认程序”,更准确地说。(Vista&7) 我希望将我的程序添加到该列表中,并设置一些它可以处理的扩展 还有一件事。我的程序支持打开更多文件的插件,所以列表应该是动态的(我可以随时添加更多扩展名甚至协议) 顺便说一下,是的,我知道,这不完全是一个编程问题。我谦虚地猜测这是一个注册问题。所以UAC不会成为问题 您将在应用程序安装过程中执行此操作。如果您使用的是WIX,您可以在中配置以下答案: 如果您确实想通过代码实现这一点,请查

许多程序都在“默认程序”控制面板小程序下列出了可能的扩展和协议。“设置默认程序”,更准确地说。(Vista&7)
我希望将我的程序添加到该列表中,并设置一些它可以处理的扩展

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


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

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


如果您确实想通过代码实现这一点,请查看。它是用VB.Net编写的,但是代码非常简单,可以很容易地翻译成C#。

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

对于其他对象,请分析此键中的值:

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications

在默认程序UI中注册应用程序所需的注册表项是(的一部分)

以下是我在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\""
……续


完整版本:我知道如何关联文件。我不知道如何让Windows知道我的程序可以使用哪些文件。你的答案肯定比我的好(更多信息),所以我会接受它。