一、目的、构思

1.检测当前系统有没有安装某个程序,如果没有就重新安装。

2.在网上找到了两种方法,可惜都找不到需要检测的app。

二、code实现

1.查找注册列表方式。要在winform的project使用,在console project 貌似找不到Microsoft.Win32.RegistryKey。

        public static bool CheckIfAppInstall(string appKeyName, out bool installResult){installResult = false;bool result = false;try{Microsoft.Win32.RegistryKey uninstallNode = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");foreach (string subKeyName in uninstallNode.GetSubKeyNames()){Microsoft.Win32.RegistryKey subKey = uninstallNode.OpenSubKey(subKeyName);object displayName = subKey.GetValue("DisplayName");if (displayName != null){if (displayName.ToString().Contains(appKeyName)){installResult = true;}}}result = true;}catch (Exception e){string error = $"error in CheckIfAppInstall:{e.Message}";throw new Exception(error);}return result;}

2.使用MsiGetProductInfo。

        static void Main(){StringBuilder result = new StringBuilder();for (int index = 0; ; index++){StringBuilder productCode = new StringBuilder(39);if (MsiEnumProducts(index, productCode) != 0){break;}foreach (string property in new string[] { "ProductName", "Publisher", "VersionString", }){int charCount = 512;StringBuilder value = new StringBuilder(charCount);if (MsiGetProductInfo(productCode.ToString(), property, value, ref charCount) == 0){value.Length = charCount;result.AppendLine(value.ToString());}}result.AppendLine();}Console.WriteLine(result.ToString());}[DllImport("msi.dll", SetLastError = true)]static extern int MsiEnumProducts(int iProductIndex, StringBuilder lpProductBuf);[DllImport("msi.dll", SetLastError = true)]static extern int MsiGetProductInfo(string szProduct, string szProperty, StringBuilder lpValueBuf, ref int pcchValueBuf);

C# 检查当前系统已安装的程序app/两种方法检测相关推荐

  1. 查看计算机.net环境版本,windows7系统查看NET Framework版本的两种方法

    现在,很多用户都会在电脑中安装NET Framework,因为一些程序需要NET Framework才能运行.那么,如果想要查看我们计算机中的 NET Framework版本,该如何操作呢?接下来,就 ...

  2. 计算机win10开机音乐,Windows10系统更改开关机声音的两种方法

    Win10正式版电脑在开机或关机时都伴随着系统自带的声音.而不少用户为了让自己的windows10系统电脑变得更加个性化一些,因此都想要自己手动更改开关机音乐.这该如何操作呢?下面,小编就向大家介绍两 ...

  3. html使屏幕保持常亮,让win7系统桌面常亮不灭的两种方法

    我们都知道离开win7电脑几分钟后,桌面就会自动变黑了,要使用电脑要移动鼠标或敲打键盘,每次这样一些用户感觉比较麻烦.有什么方法可以让win7系统桌面常亮不灭?解决问题就要找出问题的根源,其实出现此现 ...

  4. 安装jenkins插件的两种方法

    安装jenkins插件有两种方法,一种是在线安装,一种是离线安装.两种方式介绍如下: 1.如果服务器可以上网,那边选择在线安装最好不过了,安装流程为: 系统管理----插件管理---选择需要的插件直接 ...

  5. XP计算机调整对比度,Win7系统调节显示器屏幕对比度的两种方法【图文】

    win7系统开机后或者使用过程中,有时候我们会觉得电脑显示器的对比度不合适,需要进行调整,很多朋友不知道怎么调节显示器屏幕对比度?其实调节显示器屏幕对比度的方法比较简单,而且调节出一个合适的屏幕对比度 ...

  6. linux系统下重启网络服务的两种方法

    linux系统下重启网络服务的两种方法 发布时间:2020-04-02 11:25:25 来源:亿速云 阅读:207 作者:小新 今天小编给大家分享的是linux系统下重启网络服务的两种方法,很多人都 ...

  7. 计算机cpu 二级缓存,Windowsxp系统开启cpu二级缓存的两种方法

    WindowsXP系统的CPU二级缓存在默认情况下是处于关闭状态的.一些用户为了发挥出CPU的最大效率,就希望能打开CPU二级缓存.这该如何操作呢?接下来,系统城小编就为大家详细介绍xp系统cpu打开 ...

  8. win7如何开计算机端口,win7旗舰版64位系统快速开启计算机端口的两种方法

    不知道大家对于 win7系统 计算机端口的了解有多少,PConline的小编先跟大家普及一下,所谓的计算机"端口"是英文port的义译,可以认为是计算机与外界通讯交流的出口.分软件 ...

  9. windows设置任务计划定时执行php程序,两种方法

    windows设置任务计划定时执行php程序,两种方法 1.定时执行bat文件 2.定时执行php文件 1.定时执行bat文件 新建一个php文件 :在php文件写入你要执行的程序: <?php ...

最新文章

  1. zookeeper同一台服务器创建伪集群
  2. 【赠书】如何构建企业级的推荐系统?这本书值得一看
  3. bitcoin 在ubuntu上的安装指南
  4. java中List与Map的使用
  5. 电路中的这些符号标识,你真的明白吗?
  6. WebSocket | 为什么你前后端推送不会用?因为你少了WebSocket的帮忙
  7. SpringBoot 之 跳转页面的几种方法
  8. 除自身以外数组的乘积leetcode 238
  9. CodeMix使用的语言和框架(一):JavaScript
  10. Idea导出项目jar包
  11. Android mc怎么和win10联机,我的世界手机版与win10版联机可完美互通
  12. XMPP即时通讯协议使用(一)——Openfire安装
  13. 如何查看XP系统的密匙
  14. Android 动画之 View动画 和 帧动画
  15. Prometheus+Grafana搭建Jmeter性能监控平台
  16. Xcode6中使用iOS7 SDK的方法
  17. 【100%通过率】华为OD机试真题 C++ 实现【最优芯片资源占用】【2023 Q1 | 100分】
  18. Blackbox_exporter概述
  19. 基于keras的1D CNN时间序列分析
  20. python里ipo是什么意思呢_IPO 指的是什么?公开募股和所谓的上市之间有什么区别?...

热门文章

  1. Servlet学习一
  2. 关于MySQL 查询表数据大小的总结
  3. .NET 6 攻略大全(三)
  4. CentOS单机安装k8s并部署.NET 6程序
  5. C# dynamic 类型用法举例
  6. .NET 6 中的 LINQ 更新
  7. 从零实操基于WSL2 Docker部署Asp.Net Core项目
  8. 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
  9. 女神节爆猛料!. NET程序员男女比例公布!
  10. 微软开源可扩展存储引擎Extensible Storage Engine