C#检测计算机上是否安装了某些软件

引入头文件

using System.Runtime.InteropServices;

然后,输入如下代码即可

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#直接运行该代码即可。运行之(Ctrl+F5),程序会列出计算机上已经安装的软件及其相关信息,但是有些已安装软件却无法显示。如果你需要检查的软件就在结果列表里,那么恭喜你,你可以直接调用本程序;否则,你只能另寻它法了。下面的文字只是针对前者的,所以如果你的情况属于后者,就不必往下看啦。所有的结果信息都保存在result.ToString()里,我们可以对这个字符串进行操作。我的思路如下:

if(result.ToString().Contains("SoftwareName"))
  return true;
else
  return false;

我的思路很简单,就是判断结果文件中是否包含某些关键字。如,我要检测是否安装了Python,SoftwareName可以替换成Python。总之,我们只要替换成要检测的软件独一无二且出现在result.ToString()中的信息就好。

版权声明:
作者:亦灵一梦
链接:https://blog.haokaikai.cn/2020/program/aspnet/956.html
来源:开心博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
C#检测计算机上是否安装了某些软件
引入头文件 using System.Runtime.InteropServices; 然后,输入如下代码即可 static void Main() { StringBuilder result = new StringBuilder(); fo……
<<上一篇
下一篇>>