C#怎样获取已安装程序 和对应图标

失落的神庙 2012-08-10 03:54:32
C#怎样获取当前系统已经安装的程序 和显示对应的图标
...全文
384 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkkkkqqqqq55555 2013-12-03
  • 打赏
  • 举报
回复
引用 5 楼 libinguest 的回复:
调用注册表并查询
你说的话好像很正确,但一点用都没有
风之影子 2012-08-10
  • 打赏
  • 举报
回复
调用注册表并查询
ohkuy 2012-08-10
  • 打赏
  • 举报
回复
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/
失落的神庙 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

主要是图标。。。求大神开路
[/Quote]
获取到安装程序目录就可以获取该图标么?后面的是程序路径
全路径该怎么获取

Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE");

string[] strs = rk.GetSubKeyNames();

目前用的这个获取的全部程序名
ohkuy 2012-08-10
  • 打赏
  • 举报
回复
获取应用程序图标:
Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(@"C:\Program Files\Opera\opera.exe");


失落的神庙 2012-08-10
  • 打赏
  • 举报
回复
主要是图标。。。求大神开路

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧