遍历注册表搜索已安装软件(二层遍历) private void button24_Click(object sender, EventArgs e) //显示已安装软件按钮 { listView4.Items.Clear(); //显示前清空 Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"); //定义注册表操作类并指向注册表的软件信息目录 foreach (string site in rk.GetSubKeyNames()) //在Uninstall目录下搜索子键 { //listView4.Items.Add(site); RegistryKey subkey = rk.OpenSubKey(site); //定义注册表搜索子类 foreach (string m in subkey.GetValueNames()) //遍历搜索 { if (m == "DisplayName") //搜索键名为DisplayName的键 { string name = subkey.GetValue(m).ToString(); //把键名为DisplayName的键值赋值给字符串 listView4.Items.Add(name); //Form显示 } //if (m == "DisplayVersion") //{ // string ver = subkey.GetValue(m).ToString(); // //listView4.Items.Add(ver); // listView4.Items[0].SubItems.Add(ver); //} //if (m == "InstallLocation") //{ // string locate = subkey.GetValue(m).ToString(); // //listView4.Items.Add(locate); // listView4.Items[0].SubItems.Add(locate); //} //listView4.Items.Add(name, ver, locate); } } label19.Text = "计算机内已安装的软件数量为:" + listView4.Items.Count.ToString(); }