void Search(StringCollection list, string directory)
{
  string[] dirs = Directory.GetDirectories(directory);
  string[] files = Directory.GetFiles(directory, "*.*");

  foreach (string dir in dirs)
    Search(list, dir);

  foreach (string file in files)
  {
    FileInfo info = new FileInfo(file);
    if ((info.Attributes & FileAttributes.System) == 0)
    {
      list.Add(file);
    }
  }
}

とかじゃなくて?