¿Cómo abrir el diálogo de Copia de Archivo incorporado?

Voy a copiar un archivo grande en la red usando mi aplicación de winforms y necesito mostrar algún tipo de barra de progreso. En lugar de preparar mi propia rutina de copia, pensé que sería mejor simplemente mostrar el diálogo de copiado de archivo incorporado.

También necesitaría una notificación de “Copia completa” y “Copia fallida”.

Necesito que esto funcione en Windows XP, Vista y 7. ¿Hay alguna manera de llamar para activar esta funcionalidad desde mi código c #?

Respuesta tomada de: http://msdn.microsoft.com/en-us/magazine/cc163304.aspx

Windows Vista sí incluye un nuevo motor de copia que admite exactamente lo que está buscando hacer. Sin embargo, es posible que la funcionalidad previamente existente pueda satisfacer sus necesidades. Por ejemplo, si desea copiar, mover, cambiar el nombre o eliminar un archivo o directorio individual, puede aprovechar SHFileOperation (expuesto desde shell32.dll), que ya está incluido en el tiempo de ejecución de Visual Basic®. Si está utilizando Visual Basic 2005, puede simplemente usar la funcionalidad del Mi espacio de nombres, por ejemplo:

  My.Computer.FileSystem.CopyDirectory( sourcePath, destinationPath, UIOption.AllDialogs) 

Lograr lo mismo en C # implica solo un poco más de trabajo, agregar una referencia a Microsoft.VisualBasic.dll (desde el directorio de instalación de Microsoft® .NET Framework) y usar un código como el siguiente:

 using Microsoft.VisualBasic.FileIO; ... FileSystem.CopyDirectory( sourcePath, destinationPath, UIOption.AllDialogs); 

Cuando se ejecuta, esto dará como resultado la misma UI de progreso que verías si estuvieras haciendo las mismas operaciones de archivos desde Windows Explorer. De hecho, cuando se ejecuta en Windows Vista, automáticamente obtienes la nueva IU de progreso de Windows Vista, como se muestra en la Figura 1. Diálogo