Получить пути всех приложений в реестре - PullRequest
0 голосов
/ 06 марта 2010
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));

В этом фрагменте отображаются все имена приложений в реестре. Мне нужны пути к исполняемым файлам, которые запускают приложение, и мне нужно знать, как их запускать с помощью Process.Start ();

1 Ответ

1 голос
/ 06 марта 2010

На самом деле нигде в Windows нет точного источника для этого. Самое близкое, что вы получите, перечислив меню «Пуск». Посмотрите этот пост, чтобы узнать, как это сделать: Программный доступ ко всем пользователям меню Пуск

Как правило, вам нужно вызвать API SHGetSpecialFolderPath, чтобы получить местоположение меню «Пуск», а затем перечислить все ярлыки в этом пути.

Этот вопрос о стековом потоке говорит о том, как извлечь значок из ярлыка; вы можете использовать тот же метод для извлечения рабочего пути и исполняемого файла, которые вам понадобятся для запуска приложения: Извлечение значка из файла Windows .lnk (ярлык)

...