Ответ 1
Ответ взят из: http://msdn.microsoft.com/en-us/magazine/cc163304.aspx
Windows Vista действительно включает новый механизм копирования, который поддерживает именно то, что вы ищете. Однако возможно, что ранее существовавшая функциональность может удовлетворить ваши потребности. Например, если вы хотите скопировать, переместить, переименовать или удалить отдельный файл или каталог, вы можете воспользоваться SHFileOperation (открытым из shell32.dll), который уже завершен средой выполнения Visual Basic®. Если вы используете Visual Basic 2005, вы можете просто использовать функциональные возможности из пространства имен My, например:
My.Computer.FileSystem.CopyDirectory( sourcePath, destinationPath, UIOption.AllDialogs)
Выполнение одной и той же функции на С# требует лишь немного дополнительной работы, добавляя ссылку на Microsoft.VisualBasic.dll(из каталога установки Microsoft®.NET Framework) и используя следующий код:
using Microsoft.VisualBasic.FileIO; ... FileSystem.CopyDirectory( sourcePath, destinationPath, UIOption.AllDialogs);
При запуске это приведет к тому же самому пользовательскому интерфейсу прогресса, который вы увидите, если вы делаете те же операции с файлами из проводника Windows. Фактически, при работе в Windows Vista вы автоматически получаете новый интерфейс прогресса Windows Vista, как показано на рисунке 1.