スタートアップで確実にリムーバブルを


eniac  2010-08-18 19:24:30  No: 147036  IP: [192.*.*.*]

USBリムーバブルディスクを探すアプリをスタートアップに登録させているのですが、
稀に探せない時が有ります。
探せない理由が解りません。

●スタートアップ時だからOSの挙動が不安定でUSBリムーバブルディスクを認識している途中だから?
(ディレイを置いたら認識できる?)
●USBリムーバブルディスクの銘柄によっては認識できない?

以下、USBリムーバブルディスクを探している箇所の抜粋です。
フォームのLoadイベントの最初で行っていますので、アプリ起動直後に
USBリムーバブルディスクを探しています。



'認識するまで3秒間(1秒×3回)繰り返す。
Do While (intRetryCounter < 3)

  For Each objDI As IO.DriveInfo In IO.DriveInfo.GetDrives()
    If objDI.DriveType = IO.DriveType.Removable And objDI.IsReady Then
      strRtn = objDI.Name
      Exit For
    End If
  Next

  If strRtn <> String.Empty Then
    '見つかったなら抜ける
    Exit Do

  Else
    '見つからなかったら1秒待ってからもう一回探す。
    System.Threading.Thread.Sleep(1000)
    intRetryCounter += 1

  End If

Loop




認識できない銘柄が有るのが、原因だったら仕方無いのですが、
OSが不安定だとしたら、リトライ回数を増やした方が良いでしょうか?

編集 削除
eniac  2010-08-24 16:49:08  No: 147037  IP: [192.*.*.*]

調べている内にわかったのですが、
Embeddedなためか、認識できないUSBメモリが有る事がわかりました。
大容量だとNGのようです。

OSが不安定なため、認識できない場合も有るようです。
アプリ起動後にツールバーにUSBのインジケータが
表示されている事から、スタートアップ時のアプリが起動後、
USBメモリを認識しているようです。

認識できないメモリは仕方ないとして、スタートアップだけでもしっかり
メモリを認識させたいです。
そこで、ブート終了時にスタートアッププログラムを実行したいのですが、
.netでブート終了を検知する事ができますでしょうか?
もしくは、レジストリの編集が必要なのでしょうか?

スタートアップでアプリを起動し、アプリ内部でブート終了を待ってから、
実処理に移ろうと考えてます。

このような事が可能でしょうか?

編集 削除