0
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));

このスニペットは、レジストリ内のアプリケーションのすべての名前を表示します。アプリケーションを実行する exe ファイルへのパスが必要であり、Process.Start(); を使用してそれらを実行する方法を知る必要があります。

4

1 に答える 1

1

Windowsのどこにも、これに関する決定的な情報源はありません。最も近いのは、スタートメニューを列挙することです。その方法については、この投稿を ご覧ください。プログラムですべてのユーザーのスタートメニューにアクセスする

基本的に、SHGetSpecialFolderPath APIを呼び出してスタートメニューの場所を取得し、そのパス内のすべてのショートカットを列挙する必要があります。

このstackoverflowの質問では、ショートカットからアイコンを抽出する方法について説明しています。同じ方法を使用して、アプリケーションを起動するために必要な作業パスと実行可能ファイルを 抽出できます。Windows.lnk(ショートカット)ファイルからアイコンを抽出します。

于 2010-03-05T23:50:22.627 に答える