C#语言获取控制面板“程序和功能”列表

今天在项目开发过程当中遇到了一个场景。在C#写的Winform程序中,要判断一个驱动程序是否安装。数组

驱动程序安装后可在控制面板中的“程序和功能”界面找到,为此个人C#程序也须要获取这个列表,以判断驱动程序是否安装。函数

我参考了这篇文章:http://www.jb51.net/article/69506.htm.net

对这篇文章中的函数略做修改,写了个函数以下,若驱动程序已安装则返回true,不然返回false:code

/// <summary>
/// 检查注册表,查看是否安装指定驱动
/// </summary>
public static bool CheckCryptoKit()
{
    String[] softwareList = null;
    ArrayList list = new ArrayList();

    //从注册表中获取控制面板“卸载程序”中的程序和功能列表
    RegistryKey Key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
        "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");
    if (Key != null) //若是系统禁止访问则返回null
    {
        foreach (String SubKeyName in Key.GetSubKeyNames())
        {
            //打开对应的软件名称
            RegistryKey SubKey = Key.OpenSubKey(SubKeyName);
            if (SubKey != null)
            {
                String SoftwareName = SubKey.GetValue("DisplayName", "Nothing").ToString();
                //若是没有取到,则不存入动态数组
                if (SoftwareName != "Nothing")
                {
                    list.Add(SoftwareName);
                }
            }
        }
        //强制转换成字符串数组,防止被修改数据溢出
        softwareList = (string[])list.ToArray(typeof(string));
    }

    //判断有无找到驱动中要找的关键字,有则返回true,无则返回false
    foreach (string software in softwareList)
    {
        if (software.IndexOf("XXXXXXXXXXXXXXXXXX") > -1)
        {
            return true;
        }
    }

    return false;
}

ENDorm

相关文章
相关标签/搜索