static List<UinstallItem> PrepareUinstallList()
{
List<UinstallItem> list = new List<UinstallItem>();
using (RegistryKey uinstallKey = OpenUninstallRegistryKey(false))
{
string[] subKeyNames = uinstallKey.GetSubKeyNames();
// 显示等待对话框
Form form = new Form();
form.StartPosition = FormStartPosition.CenterScreen;
form.Size = new Size(250, 50);
form.MinimizeBox = false;
form.MaximizeBox = false;
form.Text = "正在查找已经安装的软件...";
ProgressBar bar = new ProgressBar();
bar.Dock = DockStyle.Fill;
bar.Maximum = 100;
bar.Minimum = 0;
bar.Value = bar.Minimum;
form.Controls.Add(bar);
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += (o, e) =>
{
for (int i = 0; i < subKeyNames.Length; ++i)
{
string subKeyName = subKeyNames[i];
using (RegistryKey subKey = uinstallKey.OpenSubKey(subKeyName, false))
{
UinstallItem item = new UinstallItem();
if (BuildUinstallItem(subKey, ref item))
{
list.Add(item);
}
}
worker.ReportProgress(i * 100 / subKeyNames.Length);
}
};
worker.ProgressChanged += (o, e) =>
{
bar.Value = e.ProgressPercentage;
};
worker.RunWorkerCompleted += (o, e) =>
{
form.Close();
};
worker.RunWorkerAsync();
form.ShowDialog();
worker.Dispose();
form.Dispose();
}
return list;
}