隐藏可移动设备列表中不希望出现的硬件

最近买的GPD WIN2,也许是众筹版第二批中的个别问题,网卡被识别为可移动设备(拆机后发现这个网卡根本就是焊死在主板上的),所以总是出现在电脑任务栏中的可移动设备列表中。

在点击诸如U盘之类安全地移除设备的时候,总会看到它,不小心点错应该就会断网吧。为了避免这种情况,网上搜了一下,发现下述文章,感觉很好用的。

ハードウェアの安全な取り外し」にて一部のデバイスを隠す方法
http://www.kiraqtech.jp/blog/?p=69
BY KIRA, RYOUTA · 公開 2014年5月20日 · 更新済み 2018年3月16日

文中用到的.cmd文件的内容:

setlocal
set LOG=%~dpn0.log
set LOG=NUL
echo -- %DATE% %TIME% -->>"%LOG%"
echo reg.exe import "%~dpn0.reg">>"%LOG%"
reg.exe import "%~dpn0.reg" >>"%LOG%" 2>&1
echo.>>"%LOG%"

另外自己的补充(记得要把电源选项的勾选取消):

最后,这个对移动U盘好像没什么用。多重启几次?后来也可以了。

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

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」という権限でタスクを実行することにより変更しています。
応用すれば通常は変更できないレジストリの値を自由に変えることができます。

上一篇
下一篇