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

原创
2017/11/01 22:07
阅读数 1.3K

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

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

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

对这篇文章中的函数略作修改,写了个函数如下,若驱动程序已安装则返回true,否则返回false:

/// <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;
}

END

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部