读取注册表参考:
//using Microsoft.Win32;RegistryKey vRegistryKey = Registry.LocalMachine.OpenSubKey(
    @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe", true);
string path = (string)vRegistryKey.GetValue("Path", "");
Console.WriteLine(path);
遍历文件参考:
//using System.IO;
foreach (string file in Directory.GetFiles(path))
{
    Console.WriteLine(file);
}添加到ListBox中参考:
foreach (string file in Directory.GetFiles(path))
{
    listBox1.Items.Add(Path.GetFileName(file));
}询问对话框参考:
private void button1_Click(object sender, EventArgs e)
{
    switch (MessageBox.Show("是否?", "询问", MessageBoxButtons.YesNo))
    {
        case DialogResult.Yes:
            Console.WriteLine("是");
            break;
        default:
            Console.WriteLine("否");
            break;
    }
}

解决方案 »

  1.   

    1、软件安装后不一定在注册表中声明自己的位置。你可具体问题具体分析。
    2、用     string path = @"E:\database";
        System.IO.Directory.GetFiles(path);
        System.IO.Directory.GetDirectories(path);
    3、    if (MessageBox.Show("world", "hello", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            // user said 'yes'
        }
      

  2.   

    第二、第三个问题, zswang的回答就可以。
    至于第一个问题,有点迷惑,我想你的应用目的可能是,找到一台电脑的注册表,然后找到所有的应用软件,并列出其目录及下面的文件。如果一个软件需要写入注册表,注册表中保存的信息会纪录其主要程序的位置,并不能记录所有的。