web-dev-qa-db-ja.com

Windowsは私のUSBドライブを使用しているものを教えてもらえますか?

私は良き市民なので、タスクバーの「ハードウェアの安全な取り外し」アイコンを左クリックし、USBドライブを選択してマウントを解除します。

それから私はメッセージを得ます:

Windowsは、Genericボリュームデバイスが使用中のため停止できません。デバイスを使用している可能性があるプログラムまたはウィンドウをすべて閉じてから、後でもう一度やり直してください。

もちろん、オペレーティングシステムなので、正確にどのアプリケーションが自分のデバイスを使用しているかを知っています。それではなぜそれは私に教えてくれないのですか?

それとも私が見つけることができる方法はありますか?

96
PP.

開いているファイルのハンドルを見つけるには、 Sysinternals Process Explorer を使用します。 Findメニューを選択してFind Handle or DLLを選択するだけです。開いたダイアログで検索ボックスにドライブ名を入力してください。検索結果には、ドライブから開かれているすべてのファイルと、どのプロセスがそれらを開いているかが表示されます。

55
heavyd

より簡単な方法:リムーバブルドライブを取り出しようとすると、Windows(少なくとも10、AFAIK)がイベントログにエントリを作成しますが、プロセスにロックが設定されているためできません。 2つのイベントID225は、プロセスIDとロックを担当するプロセスの名前を示す。

ステップバイステップ:

1) イベントビューアを起動する

2)「Windowsログ」を開き、次に「システム」を開きます。

3)「システム」を右クリックして「現在のログをフィルタ」を選択します

4)表示されるダイアログで、「All Event ID」と表示されている箇所に「225」と入力します(引用符は含みません)。

5)その後、プロセスがドライブをロックしたために排出できないことに関するすべてのイベントが表示されます。

6)これらすべてのエントリのタイムスタンプを調べて、ドライブを取り出そうとしたときの実際の時刻に関連するものを見つけます。

7)適切な処置を講じてください。ほとんどの場合、タスクを正常に終了する(ロックされているプログラムを閉じる)ことは問題ありません。 Windows Searchサービスを停止しても問題ありません。ウイルススキャンを中止しても問題ありません(その時点でウイルスがあると疑われない場合)。タスクマネージャに入り、プロセスを強制終了しても問題ないかもしれません。これにどう対処するかは、この質問の範囲を超えています。

8)(ビューを保存...)[アクション]パネル(右側のフレーム)で[フィルタをカスタムビューに保存...]を選択できるので、[カスタムビュー](左側のフレームの[上])に表示されます。 Windowsログ ")

プロセスID: Event Viewer Entry

プロセス名: Event Viewer Entry

8)プロセス名のエントリが他にない場合は、システムプロセス(プロセスID 4)がドライブを保持しています。これを回避するには、ディスクの管理に行き 取り出したいドライブをオフラインにする必要があります 。ファイルが起動ドライブにある場合は、オフラインにすることはできません。この場合は、下記の注を参照してください。

UPDATE 2018WhatsApp Desktopなどのアプリケーションがシステムプロセス を介してChrome Canaryでハンドルを保持しているのを見ました。起動ディスクを取り出すことはできないので(使用中のため)、解決策は Handle と呼ばれる別の便利な Sysinternals ユーティリティを使用することでした。ロックされたファイルを含むプログラムを閉じた後、handleを起動し、(例として)handle64 "Chrome SxS\Application\chrome.exe"を実行して、ハンドルがまだPID 4ロックを持つファイルに存在するかどうかを確認します。試行錯誤により、ロックされたファイルにハンドルがなくなるまで、実行中の各プログラムを閉じます。

最善の方法(有料)

SafelyRemove をダウンロードして実行します。それはあなたがドライブを取り出すのを助けます、そしてそれができないなら、それはどのプロセスがそれにロックをかけているかを表示します:

enter image description here

105
Gaia

wevtutil.exeを指定して、 コマンドラインを使用してWindowsログを照会することもできますWindows Kernel-PnPがイベントID 225 を使用してシステムをログに記録する(常にプロセスID 4を持つ)ことを知っているため、削除または取り出しを拒否デバイスUSB\VID _ ####&PID _ ############(#は16進数を表します)。

wevtutil qe System /q:"*[System[(EventID=225)]]" /c:5 /f:text /rd:true
  • qeシステム:システムログからイベントを問い合わせます
  • / q:XPathでクエリする
  • EventID=225は、システムが排出要求を拒否したことを意味します
  • / c:5:取得するエントリ数(ここでは5)
  • / f:text:format(デフォルトはxml)
  • / rd:true:逆順(新しい順)

バッチスクリプトで使用します。

6
Tchonialite

私にとっては(Windows 7)。

  1. ヒットウィンドウズキー
  2. "プログラムとファイルの検索:"(type =diskmgmt.msc
  3. 検索リストでエントリを見つけて右クリック - 管理者として実行を選択
  4. 「必要な場合は」「ディスクの管理」を実行するための管理者の資格情報を入力してください
  5. ディスクリストでイジェクトしない問題のあるUSBドライブを見つける
  6. 左側のパネルで、右クリックして[取り出し]を選択します。
  7. ハンドルは「閉じる」べきです - あなたはいつでもシステム内部プロセスエクスプローラで二重チェックすることができます

注:「ハードウェアを安全に取り外してメディアを取り出す」タスクバーアイコンにUSBドライブが表示されなくなりました - わずか3ドット

  1. ドライブを物理的に取り外す
5
blakev

これは、イベントログを照会し、どのアプリケーションがドライブの取り出しをブロックしているかを表示するための簡単なPowerShellコマンドです。も)

Get-EventLog -LogName System -after (Get-Date).AddHours(-1) | Where-Object {$_.EventID -eq 225} | Sort-Object TimeGenerated | Format-Table -Wrap

システムがディスクドライブを取り出せなかった過去1時間のすべてのインスタンスが出力されます。 メッセージ列は、排出をブロックしたプロセスを示しています。以下の私の例では、タスクマネージャは実際に犯人であり、タスクマネージャを閉じた後で私はイジェクトすることができました。

PS C:\Users\Jonathan> Get-EventLog -LogName System -after (Get-Date).AddHours(-1) | \Where-Object {$_.EventID -eq 225} | Sort-Object TimeGenerated | Format-Table -Wrap

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   14692 Sep 07 10:50  Warning     Microsoft-Windows-Ke          225 The application \Device\HarddiskVolume4\Windows\System32\Taskmgr.exe with process id 11972 stopped
                                   rnel-PnP                          the removal or ejection for the device USB\VID_0781&PID_5575\200445301013C111B1A0.
   14693 Sep 07 10:50  Warning     Microsoft-Windows-Ke          225 The application \Device\HarddiskVolume4\Windows\System32\Taskmgr.exe with process id 11972 stopped
                                   rnel-PnP                          the removal or ejection for the device USB\VID_0781&PID_5575\200445301013C111B1A0.
5
Jon

Resmon.exeを(WIN + Rから)起動し、disk> Disk Activity> Sort by Fileの順にクリックします。これで、システムによってアクセスされているすべてのファイルと、ファイルパス順に並べられたプロセスが表示されます。ドライブレター付き)すべてのケースでうまくいくとは限りませんが、簡単な方法です。

コンピュータを再起動すると、デバイスの使用状況が「解放」されます。また、すばやく削除するために、デバイスの[ハードウェア]セクションでウィンドウキャッシュを無効にすることもできます。ウィンドウがキャッシュを外部ディスクにフラッシュするのに予想以上に時間がかかり、デバイスが使用中であるというメッセージが表示されます。 Windows自体)

2
Felype

「マイコンピュータ」を開き、ドライブが「リムーバブル記憶域」ヘッダーの下に表示されていない場合、Windowsは何らかの理由でそれを固定システムリソースと見なしています。ドライブ上のパーティションをアンマウントする必要があります。

この場合、[コンピュータの管理]を開き、[ディスクの管理]に進んでください。デバイス上の各パーティションについて、パーティションを右クリックして[ドライブ文字とパスの変更]を選択し、そのパーティションに割り当てられているドライブ文字をすべて削除します。一度実行すると、「安全に取り出す」機能が期待どおりに機能することがわかります。

2
user1575326

Windowsが使用中であると報告したUSBがあれば...ここの他のみんなと同じです。

Windows 10の場合、Ctrl + Alt + Delキーを押すとタスクマネージャに移動します。

Windowsエクスプローラ - スクロールして見つけてください。そして強調表示します。

右下は "Restart Process"と呼ばれる素敵なボタンです。

強調表示されているのは "Windowsエクスプローラ"だけであることをダブルトリプルチェックします。

マウスが「再起動プロセス」というわかりやすいボタンを左クリックします。

私は1つのエクスプローラしか持っていませんでした、他のものは時々2つを持っています。どちらが戻ってくるのか注意してください。 USBを試して閉じる/取り出す。鉱山はうまく働いた、USBを閉じます。

あなたが排出したり閉じたりしない場合は、おそらくそれは他のエクスプローラでした。もう一度やり直してください。がんばろう。

0
John Henson