gpt4 book ai didi

c# - C#中如何获取与文件扩展名关联的推荐程序

转载 作者:可可西里 更新时间:2023-11-01 12:45:00 26 4
gpt4 key购买 nike

我想获取与文件扩展名关联的程序的路径,最好通过 Win32 API。

  1. 出现在“打开方式”菜单中的程序列表项
  2. 出现在推荐中的程序列表“打开方式...”对话框。

更新:

假设我的机器上安装了 office11 和 office12,.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);
}

关于c# - C#中如何获取与文件扩展名关联的推荐程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com