获取注册表中所有应用程序的路径

时间:2010-03-05 23:41:13

标签: registry executable execute

string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
        using (Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(registryKey))
        {
            (from a in key.GetSubKeyNames()
             let r = key.OpenSubKey(a)
             select new
             {
                 Application = r.GetValue("DisplayName")
             }).ToList().FindAll(c => c.Application != null).ForEach(c => Debug.WriteLine(c.Application));

此代码段显示注册表中应用程序的所有名称。我需要执行应用程序的exe文件的路径,我需要知道如何使用Process.Start();

运行它们

1 个答案:

答案 0 :(得分:1)

在Windows中的任何地方都没有真正明确的来源。你最接近的是枚举开始菜单。查看此帖子了解如何操作: Programmatically access All Users Start Menu

基本上,您需要调用SHGetSpecialFolderPath API来检索开始菜单的位置,然后枚举该路径中的所有快捷方式。

此stackoverflow问题讨论了如何从快捷方式中提取图标;您可以使用相同的方法来提取启动应用程序所需的工作路径和可执行文件: Extract Icon from Windows .lnk (shortcut) file