欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > C#程序开发,检测当前电脑已经安装的软件目录

C#程序开发,检测当前电脑已经安装的软件目录

2025/2/24 7:36:55 来源:https://blog.csdn.net/qq_43307934/article/details/143716716  浏览:    关键词:C#程序开发,检测当前电脑已经安装的软件目录

在Windows中使用C#做软件开发,有时候需要获取当前系统中已安装的软件及其版本号,接下来就简单介绍一下,如何通过C#获取来实现。

1、通过注册表

public List<PcSoftinfo> GetAllInstalledSoftware(string name)
{var keys = new RegistryKey[]{Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Installer\Products"),Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Installer\Products"),Registry.ClassesRoot.OpenSubKey(@"Installer\Products"),Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"),Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"),Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"),Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")};var softs = new List<PcSoftinfo>();foreach (var k in keys){if (k == null)continue;foreach (var keyName in k.GetSubKeyNames()){RegistryKey subkey = k.OpenSubKey(keyName);var displayName = subkey.GetValue("DisplayName") as string;//var productName = subkey.GetValue("ProductName") as string;不同注册表名称不一样。if (!string.IsNullOrEmpty(displayName)){int systemComponent = (int)subkey.GetValue("SystemComponent", 0);if (systemComponent == 1){//系统应用排除//continue;}var displayVersion = subkey.GetValue("DisplayVersion") as string;if (!string.IsNullOrEmpty(displayVersion)){softs.Add(new PcSoftinfo() { Name = displayName, Ver = displayVersion });}}}}return softs;
}

优点快,缺点不完全,有些软件读不到。

2、通过Win32_Product

        public List<PcSoftinfo> IsSoftwareInstalled(string softwareName){// 创建WMI查询,检查Win32_Product类中的安装信息//string query = "SELECT Name, Version FROM Win32_Product WHERE Vendor ='厂家名称'";string query = "SELECT Name, Version FROM Win32_Product";ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);var softs = new List<PcSoftinfo>();foreach (ManagementObject obj in searcher.Get()){// 如果找到匹配的软件string NAME = obj["Name"].ToString();string version = obj["Version"]?.ToString();softs.Add(new PcSoftinfo() { Name = NAME, Ver = version });}return softs; // 没找到软件}

优点全,缺点慢。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词