0

この質問にはすでに答えがあります。

インストールされているソフトウェアをそれらの名前で開こうとしています

以下のコードを使用してそれらを開きますが、インストールされているすべてのソフトウェアを検出するわけではありません。

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

それらのすべてを名前で検出して開く方法はありますか。

progName

入力によって変わる文字列です。


  • インストールされているすべてのアプリケーションを検索してからプロセスを起動しようとしたときに、リンクが表示されるかどうかわかりません。何ですかprogName?あなたはまさに何をしようとしていますか? - sab669
  • progNameは入力に応じて変わる文字列です。作成したソフトウェアを開こうとしています。 Firefox、Chromeなど一部のソフトウェアと連携していますが、すべてではありません - J.Bourne
  • お使いのオペレーティングシステムがアプリケーションとファイルの種類を関連付ける方法については、より多くの問題があるように思えます。ランダムな独自フォーマットがあり、それを開くアプリケーションがファイルを開いて開くことができない場合は、できることはあまりありません。たとえば、Process.Start("notepad++.exe", someFilePath);n ++がその機能を提供しているからだけです。テキストファイルを表示用のテキストボックスにドラッグアンドドロップできるカスタムのwinフォームアプリケーションを作成すると、Process.Start("myApplication.exe", someFilePath);何もしません。 - sab669

1 답변


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;
    }

リンクされた質問


関連する質問

最近の質問