« ベーコンバゲット・オーバーキルド。(☆) | トップページ | 実録ノーオイルフライヤー:ハムトースト改善。(☆) »

2013.08.23

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 ]だったかな)、現状お茶を濁しております。

 もうちょいスマートな方法ないものかな。というか、そもそもどっか設定を見落としてるよなあこれ絶対…… と思いつつ。ここしばらく苦労していたお話のまとめでありました。
 

|

« ベーコンバゲット・オーバーキルド。(☆) | トップページ | 実録ノーオイルフライヤー:ハムトースト改善。(☆) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: windows7でUSBメモリを認識させなくする方法(力業編):

« ベーコンバゲット・オーバーキルド。(☆) | トップページ | 実録ノーオイルフライヤー:ハムトースト改善。(☆) »