获取应用程序图标:
Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(@"C:\Program Files\Opera\opera.exe");

解决方案 »

  1.   

    获取到安装程序目录就可以获取该图标么?后面的是程序路径
    全路径该怎么获取 Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE");            string[] strs = rk.GetSubKeyNames();目前用的这个获取的全部程序名
      

  2.   

    C#获取应用程序图标获取后在保存成ICO文件using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.IO;namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            [StructLayout(LayoutKind.Sequential)]
            public struct SHFILEINFO
            {
                public IntPtr hIcon;
                public IntPtr iIcon;
                public uint dwAttributes;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
                public string szDisplayName;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
                public string szTypeName;
            };
            class Win32
            {
                public const uint SHGFI_ICON = 0x100;
                public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
                public const uint SHGFI_SMALLICON = 0x1; // 'Small icon
                [DllImport("shell32.dll")]
                public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
                [DllImport("shell32.dll")]
                public static extern uint ExtractIconEx(string lpszFile, int nIconIndex, int[] phiconLarge, int[] phiconSmall, uint nIcons);
            }
            private void button1_Click(object sender, EventArgs e)
            {
                openFileDialog1.ShowDialog();
                SHFILEINFO shinfo = new SHFILEINFO();
                Win32.SHGetFileInfo(openFileDialog1.FileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_LARGEICON);
                Icon myIcon = Icon.FromHandle(shinfo.hIcon);
                FileStream fileStream = new FileStream("E:\\1.ico",FileMode.Create);
                myIcon.Save(fileStream);
                fileStream.Close();
            } 
        }
    }参考:
    http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/c08fd375-e269-4c4b-af19-974e03cacee6/