「ハードウェアの安全な取り外し」にて一部のデバイスを隠す方法

Windowsの右下の「ハードウェアを安全に取り外してメディアを取り出す」に表示させたくないデバイスがある場合、本投稿の操作を行えば任意のデバイスを隠すことができます。
Googleで検索しても、検索の仕方が悪いのか、欲しい情報が出てこなかったのでここにやり方を記載します。
なお、本投稿において登場する「\」(バックスラッシュ)は「¥」(円記号)と読み替えてください。
また、一連の作業はコンピューターの管理者権限を持つユーザーにて行ってください。
スクリーンショットはWindows 8.1にて撮影しました。

注意:

本投稿に記載してある情報は無保証です。
利用者がここに書いてあることを実行した結果、システムに問題が発生した場合でも、投稿者は責任を負いません。
なお、本手順にて作成したWindowsコマンドスクリプト(*.cmd)と登録エントリファイル(*.reg)が意図せずに書き換えられてしまうと、セキュリティの問題につながります。
これらのファイルは基本的に書き込み禁止にするような運用が望ましいです。
詳しく知りたい方は、私までご連絡ください

手順

  1. デバイス マネージャーを開きます。
    Windows 8/8.1では、一番右上から下にマウスを動かして「検索」を押し、「devmgmt.msc」と入力して出てきたアイコンを押してください。
    Windows Vista/7では、スタートボタンを押し、下の検索ボックスに「devmgmt.msc」と入力して出てきたプログラムを押してください。
  2. タスクトレイから非表示にしたいデバイスをデバイス マネージャー上で探し、ダブルクリックしてプロパティを表示させます。
  3. 「詳細」タブを開き、「プロパティ」を「機能」にして、
    • CM_DEVCAP_EJECTSUPPORTED
    • CM_DEVCAP_REMOVABLE

    のどちらかがあることを確認します。
    hide-safely-remove-devices_01

  4. 「プロパティ」を「デバイス インスタンス パス」にして、値を確認します。
    hide-safely-remove-devices_02
  5. レジストリ エディターを開きます。1.と同様に、検索から「regedt32.exe」を起動してください。
  6. 先ほど確認した「デバイス インスタンス パス」の値の階層が、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum」の下にありますので、ここを開いてエクスポートします。左ペインから対象を右クリックして「エクスポート」を選んでください。
    複数追加したい場合は、それぞれを別のファイル名でエクスポートします。
    なお、Capabilitiesという名前のDWORD値が、先ほど確認した「機能」の一番上の値と等しくなります。
    hide-safely-remove-devices_03
  7. メモ帳(検索から「notepad.exe」)等を開き、1行目を

    とします。

  8. エクスポートした「登録エントリ」のファイルを右クリックで編集し、一番上にある

    の行と、

    の行を先ほどのメモ帳の一番下にコピーして貼り付けます。

  9. Cababilitiesの値を変更します。
    1の位(一番右の値)を

    • 1の位が「2」「4」「6」のどれかなら「0
    • 1の位が「3」「5」「7」のどれかなら「1
    • 1の位が「a」「c」「e」のどれかなら「8
    • 1の位が「b」「d」「f」のどれかなら「9

    とします。

    (例1) もとの値が「dword:00000006」のとき

    • 新しい値を「dword:00000000」とする。
    • CM_DEVCAP_EJECTSUPPORTEDCM_DEVCAP_REMOVABLEの両方が無効となります。

    (例2) もとの値が「dword:00000012」のとき

    • 新しい値を「dword:00000010」とする。
    • CM_DEVCAP_EJECTSUPPORTEDが無効となります。

    なお、Capabilitiesの値は16進数で各フラグ値をORした値です。
    CM_DEVCAP_EJECTSUPPORTED0x2CM_DEVCAP_REMOVABLE0x4の値ですので、Capabilitiesの1の位を2だけ引けばCM_DEVCAP_EJECTSUPPORTEDが、1の位を4だけ引けばCM_DEVCAP_REMOVABLEが無効となります。

  10. エクスポートした各ファイルで8.と9.の操作を行ってください。
  11. 編集が終わったら、「名前を付けて保存」でファイルの種類を「すべてのファイル (*.*)」、ファイル名を「hide_safely_remove.reg」(ドットの前は任意)などとして保存してください。
    なお、図は2つのデバイスを非表示にする場合の例です。
    hide-safely-remove-devices_04
  12. メモ帳等で以下の内容のテキストを作成し、「名前を付けて保存」でファイルの種類を「すべてのファイル (*.*)」、ファイル名を「hide_safely_remove.cmd」(ドットの前は先ほどと同じもの)などとして保存してください。
    なお、3行目の「set LOG=NUL」という行を削除すると、このファイルと同じフォルダにログが出力されます。

    hide_safely_remove.cmd

  13. タスク スケジューラを開きます。1.と同様に、検索から「taskschd.msc」を起動してください。
  14. 右ペインの「タスクの作成…」を押します。
    hide-safely-remove-devices_05
  15. 「全般」タブ
    • 「名前」は任意のものが指定できます。
    • 「ユーザーまたはグループの変更…」にてオブジェクト名の入力欄に「SYSTEM」と入力し、「OK」を押します。
    • 「最上位の特権で実行する」も有効にしてください。

    hide-safely-remove-devices_06

  16. 「トリガー」タブ
    • 「新規」からトリガーを2つ追加します。「タスクの作成/変更時」と、「ログオン時」を追加しましょう。

    hide-safely-remove-devices_07

  17. 「操作」タブ
    「新規」から「プログラムの開始」を追加します。追加するプログラムは先ほど保存した「hide_safely_remove.cmd」を指定してください。
    hide-safely-remove-devices_08
  18. 設定完了後、「OK」でタスクが登録・実行されます。
    右下のタスクトレイの「ハードウェアを安全に取り外してメディアを取り出す」からデバイスが消えているのをご確認ください。
  19. 登録したタスクは、「タスク スケジューラ ライブラリ」に保存されているはずです。ここからタスクを選び、プロパティを開いて「OK」を押すと、任意のタイミングでタスクを実行できます。
    hide-safely-remove-devices_09

なお、Windowsを再起動すると「ハードウェアを安全に取り外してメディアを取り出す」にデバイスが復活しますので、ログオン時に毎回デバイスを隠す操作を実行するようにしています。

補足

この方法では、管理者ユーザーの権限でも変えられないレジストリの値を、「NT AUTHORITY\SYSTEM」という権限でタスクを実行することにより変更しています。
応用すれば通常は変更できないレジストリの値を自由に変えることができます。

KIRA, Ryouta

キラキュー・テックの代表です。 アプリケーション・システムの開発などをしています。

あわせて読みたい

1件の返信

  1. Johnb404 より:

    hi!,I really like your writing so so much! proportion we communicate more about your post on AOL? I need a specialist on this space to unravel my problem. Maybe that’s you! Looking ahead to see you. aadeaedeekdk

コメントを残す

メールアドレスが公開されることはありません。

*