Forçar pen drive USB para montar antes de continuar

Eu estou escrevendo um programa atualizador em C # usando o Visual Studio 2008 no Windows 7. Gostaria que o usuário insira um pen drive USB e se o programa encontrar a unidade e atualizações na unidade, em seguida, copia-os automaticamente. Eu desejo verificar apenas uma vez na inicialização e, em seguida, executar um programa que não tenha conhecimento das atualizações (as atualizações realmente precisam acontecer com o encerramento do programa).

Meu problema é que o programa de atualização está sendo executado antes que o pen drive esteja sendo montado, de forma que o computador não detecte pen drives, não faça atualizações e se mova prematuramente. Eu quero ter tudo funcionando o mais rápido possível, mas eu preciso forçar todos os pen drives para montar antes da detecção. Tudo deve ser automático sem entrada do usuário.

Isso é possível em c #?

Edite com mais detalhes:

Eu atualmente executo um arquivo de lote na inicialização (na verdade, como o shell do Windows 7, mas não tenho certeza que faz a diferença). O arquivo de lote executa a verificação de atualização e o programa real. Se o usuário tiver a unidade USB presa na inicialização, eu gostaria que o atualizador analisasse a unidade e copiasse todos os arquivos novos.

A corrente codificada se parece com:

 DriveInfo[] ListDrives = DriveInfo.GetDrives();
 foreach (DriveInfo Drive in ListDrives)
 {
      if(Drive.DriveType == DriveType.Removable)
      {
           // double check it's valid and copy over stuff
      }
 }

mas atualmente não encontra drives na inicialização. Se eu correr mais tarde, então está tudo bem. Estou assumindo que desde que eu corro o atualizador tão cedo, ele simplesmente não teve a chance de montar, mas eu não quero apenas esperar N segundos, se eu não tiver, porque em circunstâncias normais, é apenas o tempo morto.

Se eu puder fazer isso, o check-up fácil é muito mais simples do que ter que monitorar continuamente um evento e depois encerrar tudo e fazer uma atualização.

questionAnswers(3)

yourAnswerToTheQuestion