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