2017-02-07 5 views
0

Я пытаюсь открыть установленные программные обеспечения с их именамиОбнаружение и открыть все установленное программное обеспечение

Я использую это следующие коды, чтобы открыть их, но он не обнаруживает все установленные программные обеспечения.

Process proc = new Process(); 
        proc.EnableRaisingEvents = false; 
        proc.StartInfo.FileName = progName; 
        proc.Start(); 

Есть ли способ обнаружить и открыть все из них с их именами?

progName 

- это строка, которая изменяется с помощью ввода.

+1

Я не уверен, я вижу связь между найти все установленные приложения и пытается запустить процесс. Что такое 'progName'? Что именно ты пытаешься сделать? – sab669

+0

progName - строка, которая изменяется с помощью ввода. Я пытаюсь открыть программное обеспечение, которое я пишу. Он работает с некоторыми программными средствами, такими как firefox, chrome, но не все. –

+0

Похоже, что это больше проблема с тем, как ваша операционная система связывает приложения и типы файлов. Если у вас есть какой-то случайный форматный формат, и приложение, которое открывается, у него нет возможности принять файл, который открывается, то вы не можете многое сделать. Например, вы можете сделать 'Process.Start (« notepad ++. Exe », someFilePath);' только потому, что n ++ предлагает эту функциональность. Если вы пишете пользовательское приложение форм выигрышей, которое позволяет перетаскивать текстовые файлы в текстовое поле для отображения, 'Process.Start (« myApplication.exe », someFilePath);' ничего не сделает. – sab669

ответ

0

Вы можете попробовать с помощью этого метода:

using Microsoft.Win32; 

public List<string> GetAllInstalledPrograms() 
    { 
     List<string> res = new List<string>(); 

     string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 
     using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key)) 
     { 
      foreach (string subkey_name in key.GetSubKeyNames()) 
      { 
       using (RegistryKey subkey = key.OpenSubKey(subkey_name)) 
       { 
        res.Add(subkey.GetValue("DisplayName").ToString()); 
       } 
      } 
     } 

     return res; 
    } 
Смежные вопросы