2017-02-07 6 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 ++がその機能を提供するためです。テキストファイルをテキストボックスにドラッグ&ドロップして表示するカスタムwinフォームアプリケーションを作成すると、 '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; 
    } 
関連する問題