我需要在应用程序图标的本地计算机上获取已安装程序的列表.下面是用于获取已安装程序和已安装目录路径列表的代码段.
/// <summary> /// Gets a list of installed software and,if known,the software's install path. /// </summary> /// <returns></returns> private string Getinstalledsoftware() { //Declare the string to hold the list: string Software = null; //The registry key: string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey)) { //Let's go through the registry keys and get the info we need: foreach (string skName in rk.GetSubKeyNames()) { using (RegistryKey sk = rk.OpenSubKey(skName)) { try { //If the key has value,continue,if not,skip it: if (!(sk.GetValue("DisplayName") == null)) { //Is the install location known? if (sk.GetValue("InstallLocation") == null) Software += sk.GetValue("DisplayName") + " - Install path not known\n"; //Nope,not here. else Software += sk.GetValue("DisplayName") + " - " + sk.GetValue("InstallLocation") + "\n"; //Yes,here it is... } } catch (Exception ex) { //No,that exception is not getting away... :P } } } } return Software; }
现在的问题是我如何获得已安装的应用程序图标?
提前致谢.
解决方法
为了确定它是否是更新,将有一个名为IsMinorUpgrade的密钥.这存在并设置为1以进行更新.如果它为0或不存在,那么它不是更新.
VB:
Public Function IconFromFilePath(filePath As String) As Icon Dim result As Icon = Nothing Try result = Icon.ExtractAssociatedIcon(filePath) Catch ''# swallow and return nothing. You could supply a default Icon here as well End Try Return result End Function
C#:
public Icon IconFromFilePath(string filePath) { Icon result = null; try { result = Icon.ExtractAssociatedIcon(filePath); } catch { } return result; }