こじんてきメモ

趣味とか...(╹◡╹)

USBメモリを使用できなくするコマンドもしくはバッチ

USBメモリを使用できなくしたい。

対応できる技術探し

1.PNFファイルをアクセス拒否にする方法
2.レジストリ値を変更する方法
3.ローカルグループポリシーで制御する方法
4.製品導入

現場環境について

  • 既存のイントラネット環境があり、既存環境の変更はユーザには許可されない
  • そのため、portshutter等の製品の導入は不可
  • クライアント側ではリモートレジストリサービスはデフォルトで無効となっている
  • 対応にスピード感が求められる

技術と運用と相談した結果

・普段はUSBメモリを使用禁止にしておいて、「ちょっと使いたいから今だけ使えるようにして!」と言われた時だけ有効にする
・「終わった!」と言われたら再度使用禁止にする

具体的な方法

レジストリキー

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]

[Start][4] にする事でUSBメモリの使用は禁止となり、 [3] にする事で許可できるので、レジストリをそれぞれに変更するバッチを作成する。

・バッチ本体はクライアント側に仕込んでおき、ショートカットアイコンを同階層に作っておく。

・「使えるようにして!」といわれたらリモートで「USBメモリ有効化バッチ」のショートカットアイコンをデスクトップに出して、叩いてもらう。

・叩いてもらったらリモートでショートカットアイコンを消す。

・終わったよと言われたら、「USBメモリ無効化バッチ」のショートカットアイコンをデスクトップに出して、叩いてもらう。

・ただし、この方法だと、本当に無効にしたのかが分からないので、予めバッチ内にログを吐き出すように細工しておく。

書いといてなんだかわかりにくく書いてる気がするけど、とりあえずそのバッチ↓

USBメモリ有効化.bat

@echo off
title USBメモリ有効化

echo USBメモリを有効にします。
pause
echo 有効化中です。お待ちください。
ping localhost >nul 2>&1
cls
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR" /v "Start" /t REG_DWORD /d 3 /f
echo 認識されない場合はUSBメモリを挿し直してください。
echo.
pause


USBメモリ無効化.bat

@echo off
title USBメモリ無効化

echo USBメモリを無効にします。
pause
echo 無効化中です。お待ちください。
ping localhost >nul 2>&1
cls
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR" /v "Start" /t REG_DWORD /d 4 /f
echo USBメモリを挿している場合は、次回接続時以降反映します。
echo.
pause

蛇足

  • ローカルグループポリシーでやるといろいろできるし、設定値も結局レジストリだが、こちらは再起動、ログオフもしくは何らかの方法でのレジストリの再読み込みが必要になるため、今回は不採用
  • 外付けHDDはリムーバブルディスクじゃないからすり抜けるかもと思ったけど、外付けHDDもちゃんと無効になってくれた
  • pnfのアクセス制限をする方法は、ユーザーに操作をさせる手間と危険性から、真っ先に選択肢からはずした