windows7でUSBメモリを認識させなくする方法(力業編)
リンク: Tips:USB大容量記憶装置ドライバを無効にする - @IT.
先に言っておきますが、レジストリをかなり無造作にいじってますので、試して見るときは自己責任でお願い致します。PCがおかしくなっちゃってもなんの責任も負えませんので、予めご了承の程。
こないだからあたまかかえててた仕事の上の問題で、USBメモリの制限がありました。セキュリティ的な問題で、USBメモリのたぐいをPCから認識できないようにしたい、と言う問題です。ただし、メモリ以外のUSB機器。たとえばマウスだとかキーボードだとか、あるいはプリンタだとかは普通に使える、と言う条件で。
それだけならまだいいのですが、アドミニストレーター権限下で、USBメモリを「使用できる」設定と、「使用できなくする」設定をワンタッチで切り替えられるようにしてね。と、さらりと面倒なことを付け加えられて、結構頭を捻っておりました。
結論から言うと、XPでは可能になったのですが、7ではどうもうまくいかない。いろいろ調べていて、正解とは到底言いかねますが、ひとつの回答は得られたので、ちょろっとだけメモ。
調べていて辿り着いた基本的なやりかたは、上記リンクの通り。
つまり、USBマスストレージクラスの機器が接続された際に。
1)その機器のドライバが登録されていなかったら、インストールを不能にする。
こっちは「PCに一回も接続したことがないUSBメモリを制限する」方法。
具体的には、USBマスストレージクラスのドライバ情報ファイルであるusbstor.infとusbstor.pnfにアクセス制限をかけてしまう。こうすることで新しい機器が接続され、windowsがライブラリに「新しい機種」の情報を書き込もうとしても、肝心のライブラリへ書き込みを行う事ができない(アクセス拒否してるから)ので、結果としてドライブのインストールに失敗し、USBメモリは使用できなくなる。
2)その機器のドライバが登録されていたら、レジストリを書き換えてドライバを無効にする。
一方こちらは、「PCに一回でも接続された事があるUSBメモリを制限する」方法。たとえ接続しても、ドライバが無効化されているので、やっぱりUSBメモリを使うことができなくなる。
レジストリのHKLM\SYSTEM\CurrentControlSet\Services\USBSTOR、Startの項目。DWORD値で4を書き込むと使用不能に、逆に3を書き込むと使用可能になる、と言う寸法。
あとはコマンドプロンプトかなんかで、usbstorのアクセス権とレジストリを書き換えるようにしてやれば、(管理者権限下であるかぎり)ワンタッチでオンオフが切り替えられるようになるはず。7はXPと違って、takeownもあればicaclsもあるので楽でいいや。とか思ってたら。
何故か失敗。ユーザ権限でテストしていたら、USBメモリを差すと普通にインストールが始まってしまいます。おーやー? と思いアクセス権をチェックしてみたり、いろいろするものの。ドライバがインストール済みであれば、2)のドライバ無効化で弾いてくれるのですが、1)のほうがどうもうまく動いてくれないみたいです。
なんか設定入れ忘れたのかなあ…… と頭をぼりぼりしつつ、動作を確認。ユーザ権限でもUSBメモリを差すとドライバをインストールしてしまう(ここがしくじっている)のですが。どうもそのインストールの最終段階で、レジストリのStartの項目を3(有効)に書き換えているみたいです。
まあそりゃそうですよね。新しいドライバをインストールしたら、最終的に有効にするわけですから。しかし、この動作のとばっちりで、新しいUSBメモリをインストールして有効にしたら、これまでは動作していなかった「インストール済のUSBメモリ」も、普通に動作してしまうようになってしまいます。
これは困った。さてどうする。あれこれ首をひねって、辿り着いたのは、「だったらUSBSTORのレジストリにも、アクセス制限かけちゃえばいいんじゃないか?」と言う事です。
正直いい手だとは思えない(ふつうレジストリにアクセス制限かけたりはたぶんしない)のですが、時間もなかったことですし、取り急ぎこの思いつきを試して見る事に。Startの値をまず4(制限)にして、レジストリエディタから手動で、everyoneに拒否を加えたところ…… 成功。
新規のUSBメモリでも、登録済のUSBメモリでも、インストールに失敗したり、認識しなくなったりします。デバイスマネージャで覗いてみると、USBの項目の下に「無効のドライバ」として「USB大容量記録デバイス」の文字が。維持になってUSBメモリとHDDを三つもつないだので、三つほど並んでいます。
さて、GUI環境では、ここまででOK。なのですが、これをコマンドプロンプトに、CUIでできるようにしないといけません。どうすんだこれ。
調べて見たところ、レジストリのアクセス権限をコントロールするのは、regini.exeを使えば可能なようです。とはいえ、これもずいぶん癖のあるコマンドで、おまけにアクセス権限の「許可」を与えることはできても、「制限」を与えることはできないようなのです。
あれ? 積んだ? と思ったものの、regini.exeファイルの設定とにらめっこ。結論として、このコマンドが「アクセス権限を完全に置き換える」そうなので、「読み取り可能な権限」だけを与えてやることで、結果として書き込みを制限できるのでは、と言う結論に。
設定用テキストファイルに、レジストリの位置を入れ、(HKLMはそのままでは駄目で、\registry\machineに置き換える必要がある)、二行目にUSBSTOR [ 19 ]」を追加。手元にマシンがないので不安ですが、スペースは必要なかったかも。
この[19]は、SYSTEMに読み取りの許可を与えるオプション。これだけを与えてやることで、書き込みができるユーザが存在しなくなり、結果としてUSBSTORレジストリへの書き込みが出来なくなり、最終的にUSBストレージをつなげても、うんともすんとも認識しなくなる、ってな寸法です。長かったしろくな方法じゃない……。
ちなみに最低な話ですが、元に戻す方法が良く解りませんでした(エクスポートしておいたレジストリをインポートしなおしたんですが、アクセス権はもとのままでした)。
なので、同じようにregini.exeを使って、SYSTEMとeveryoneにフルコンを与えて([ 7 17 ]だったかな)、現状お茶を濁しております。
もうちょいスマートな方法ないものかな。というか、そもそもどっか設定を見落としてるよなあこれ絶対…… と思いつつ。ここしばらく苦労していたお話のまとめでありました。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 三年と四半期ぶりにPCが欲しい熱。(2021.01.23)
- 4年ぶりのX1。(☆☆☆)(2017.09.27)
- 腕ボタンアムヒア。(☆)(2016.03.03)
- やってきていたアマゾン棒。Fire TV Stick(☆☆)(2015.11.19)
- 写真とカメラと電気アルバム。(☆)(2015.08.21)
コメント