3

これを使用してプログラム名を取得していますが、exe 名が必要です。どうすればそれらを見つけることができますか?

string SoftwareKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products";
RegistryKey rk = default(RegistryKey);
rk = Registry.LocalMachine.OpenSubKey(SoftwareKey);
//string skname = null;
string sname = string.Empty;

foreach (string skname in rk.GetSubKeyNames())
{

  try
    {
       sname = Registry.LocalMachine.OpenSubKey(SoftwareKey).OpenSubKey(skname).OpenSubKey("InstallProperties").GetValue("DisplayName").ToString();
       listBox1.Items.Add(sname);
     }
     catch (Exception ex)
     {
        MessageBox.Show(ex.Message);
     }
}

私はこれをやろうとしています:

System.Diagnostics.Process.Start("Name.exe");

プログラムを実行します。

4

3 に答える 3

0

Windows では、プログラムは通常 msi ファイルによってインストールされ、1 つのパッケージによって複数の exe がインストールされる場合があります。プログラムが setup.exe によってインストールされることがあるのは事実ですが、実際の msi ファイルを抽出する単なるラッパーです。

InstallShield などの一部のベンダーは、ユーザーが変更またはアンインストールの目的で setup.exe を再度起動する必要がある場合に備えて、setup.exe をローカル ハードドライブのどこかに保存する場合があります。ただし、これはベンダー固有の実装です。

于 2012-07-04T05:09:21.687 に答える
0

詳細については説明がありませんが、次のようにローカル ドライブで .exe を取得できます。

var allExePaths =
    from drive in Environment.GetLogicalDrives()
    from exePath in Directory.GetFiles(drive, "*.exe", SearchOption.AllDirectories)
    select exePath;

特定のものを探している場合は、探しているものを決定する要因について、より詳細を提供してください。レジストリを使用してインストールされているプログラムを一覧表示することは、あなたがやりたいことではないようです。そのため、より具体的にしてください。

于 2012-07-04T07:37:44.643 に答える
0

インストーラーは、実際の実行可能ファイルについて認識していません。インストール パッケージ (.MSI ファイル) のみを認識します。

実行可能ファイルの名前を取得するには (多くの「プログラム」は多数の .EXE ファイルで構成されています)、.MSI ファイルを調べる必要があります。

于 2012-07-04T05:06:20.237 に答える