[英]How to get recommended programs associated with file extension in C#
我想获得与文件扩展名关联的程序的路径,最好是通过 Win32 API。
升级版:
假设我的机器上安装了 office11 和 office12,默认程序 for.xls 是 office 11。如果查看 HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command 有一个到 office11 excel.exe 的路径,但是当我右键单击文件我可以在打开方式菜单项中选择office12。 那么这个关联存储在哪里呢?
我正在使用 C#。
谢谢。
我写了一个小程序:
public IEnumerable<string> RecommendedPrograms(string ext)
{
List<string> progs = new List<string>();
string baseKey = @"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\." + ext;
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(baseKey + @"\OpenWithList"))
{
if (rk != null)
{
string mruList = (string)rk.GetValue("MRUList");
if (mruList != null)
{
foreach (char c in mruList.ToString())
progs.Add(rk.GetValue(c.ToString()).ToString());
}
}
}
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(baseKey + @"\OpenWithProgids"))
{
if (rk != null)
{
foreach (string item in rk.GetValueNames())
progs.Add(item);
}
//TO DO: Convert ProgID to ProgramName, etc.
}
return progs;
}
像这样调用它:
foreach (string prog in RecommendedPrograms("vb"))
{
MessageBox.Show(prog);
}
曾经想以编程方式将系统上的文件类型与您的应用程序相关联,但不喜欢自己挖掘注册表的想法? 如果是这样,那么这篇文章和代码适合你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.