c# 怎么获取电脑上安装的所有软件(急!!!!)
想做一个软件启动时要检查硬件设备是否已经安装驱动,谷歌了,也百度了,没找到答案,现在换种思维,想先获得电脑上所有已经安装的软件,然后在和驱动软件名对比,有则已经安装了该驱动。问题是怎样获取电脑上安装的所有软件呢?
要求:能获取控制面板中程序里面列出来的所有软件??
网上搜到的两种方法都不行,第一种是读注册表
string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey))
{
foreach (string skName in rk.GetSubKeyNames())
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
try
省略...
第二种是导入两个动态链接库
[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,[Out]StringBuilder lpValueBuf,[In,Out] ref int pcchValueBuf);
两种都试了,均不能获得控制面板程序里的所有软件?呼吁高手支招!!!!!!
要求:能获取控制面板中程序里面列出来的所有软件??
网上搜到的两种方法都不行,第一种是读注册表
string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey))
{
foreach (string skName in rk.GetSubKeyNames())
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
try
省略...
第二种是导入两个动态链接库
[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,[Out]StringBuilder lpValueBuf,[In,Out] ref int pcchValueBuf);
两种都试了,均不能获得控制面板程序里的所有软件?呼吁高手支招!!!!!!
...全文


