1

私は、着信 USB デバイスを検出して GUI アプリケーションを起動する単純な Windows サービスを作成しようとしています。

            WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
            watcher.EventArrived += watcher_EventArrived;
            watcher.Query = query;
            watcher.Start();
            watcher.WaitForNextEvent();

このソリューションは Win 7 ではうまく機能しますが、XP では失敗します (私は XP SP3 を持っています)。

ここで別の解決策を見つけました

http://www.codeproject.com/Articles/63878/Enumerate-and-Auto-Detect-USB-Drives

これは、Windows XP でも Windows フォーム アプリケーションで非常にうまく機能しますが、Win 7 でもサービスを開始すると失敗します。

助けていただけますか?

EDIT 1: 現在、コードをWindowsサービスに配置すると、win XPで機能するソリューションはありません。

敬具

バーラト

4

1 に答える 1

1

単純に両方のソリューションを使用してから、使用している Windows のバージョンに応じて適切なソリューションを使用できます。

このプロパティを使用して、使用しているSystem.Environment.OSVersionWindows のバージョンを確認し、Windows 7 より前の場合は CodeProject ソリューションを実行し、Windows 7 以降の場合は別のソリューションを実行します。

System.Environment.OSVersion宿泊施設から返される情報の詳細については、こちらをご覧ください。

于 2013-04-04T12:23:51.477 に答える