1

大家好,我正在开发一个开始菜单样式的程序,想知道我是如何获得固定程序和所有程序列表的。我开始了一些研究,并将发布我发现的内容,以便你们都可以帮助填补空白。

为了获取程序图标,我发现了这个...

public static Icon IconFromFilePath(string filePath)
{
    var result = (Icon)null;

    try
    {
        result = Icon.ExtractAssociatedIcon(filePath);
    }
    catch (System.Exception)
    {
        // swallow and return nothing. You could supply a default Icon here as well
    }

    return result;
}

为了获取所有程序和固定程序,我找到了这些路径......

%USERPROFILE%\appdata\Roaming\Microsoft\Windows\开始菜单\程序

C:\ProgramData\Microsoft\Windows\开始菜单\

这些位置是什么?开始菜单如何使用这些位置?我该如何使用它们?希望我不是简短的,而是想表明我真的在努力解决这个问题并且一直在寻找。谢谢!

4

1 回答 1

2

首先,您可以使用以下方式获取用户的固定程序列表:

%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu

归功于https://superuser.com/a/171129

该文件夹以及您已经找到的文件夹都包含“开始”菜单的所有快捷方式。您可以使用Directory.EnumerateFiles或获取文件Directory.GetFiles。获得文件列表后,您需要为每个文件创建 ViewModel 对象:

public class StartMenuItem
{
    public Image Icon {get; set;}
    public String LinkPath {get; set;}
}

创建这些集合并将您的列表视图绑定ItemSource到它。最后,要启动应用程序,您可以使用Process.Start

ProcessStartInfo info = new ProcessStartInfo ( "example.lnk" );
info.CreateNoWindow = true;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;
info.RedirectStandardInput = true;
Process whatever = Process.Start( info );

有关详细信息,请参阅使用 Process.Start C# 通过快捷方式运行应用程序

于 2014-12-15T18:19:24.427 回答