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

相關文章
相關標籤/搜索