Windows XP 의 USB접속을 금지하기

@ECHO OFF ECHO ——————————————————– ECHO ・アクセス権でUSBストレージを使用不可にする ECHO ・レジストリ設定値を変更してUSBストレージを使用不可にする ECHO ——————————————————– :SHOWWARN ECHO var RESULT = “-1”; // 処理結果コード(0:はい、1:いいえ、-1:異常終了) > 01.js ECHO var WshShell = WScript.CreateObject(“WScript.Shell”); >> 01.js ECHO var BtnCode = WshShell.Popup(“USBストレージ読み/書きの禁止設定を行います。nn【重要】 このスクリプトは、レジストリの編集処理を行います。n万一に備えて、必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。nバックアップ、復元の詳細を参照するには、以下のURLにアクセスしてください。nnhttp://support.microsoft.com/kb/256986/nn処理を続行しますか?”, 0, “警告”, 4 + 48); >> 01.js ECHO switch(BtnCode) { >> 01.js ECHO case 6: >> 01.js ECHO RESULT = “0”; >> 01.js ECHO break; >> 01.js ECHO case 7: >> 01.js ECHO RESULT = “1”; >> 01.js ECHO break; >> 01.js ECHO } >> 01.js ECHO WScript.Quit(RESULT); >> 01.js C:WINDOWSsystem32WScript.exe 01.js if errorlevel 1 goto END if errorlevel 0 goto CACLS :CACLS ECHO var RESULT = “0”; // 処理結果コード(0:正常終了、-1:異常終了) > 02.js ECHO var OUTSTR = “”; // 実行結果 >> 02.js ECHO var ERRSTR = “”; // 実行結果(エラー) >> 02.js ECHO var WshShell = new ActiveXObject(“WScript.Shell”); >> 02.js ECHO var oExec = WshShell.Exec(“cmd /c echo %%SystemRoot%%\Inf\”); >> 02.js ECHO while (oExec.Status == 0) >> 02.js ECHO { >> 02.js ECHO WScript.Sleep(100); >> 02.js ECHO } >> 02.js ECHO var dir = oExec.StdOut.ReadLine(); >> 02.js ECHO var FSO = WScript.CreateObject(“Scripting.FileSystemObject”); >> 02.js ECHO try{ >> 02.js ECHO FSO.CopyFile(dir + “usbstor.inf”, dir + “usbstor.inf.bak”); >> 02.js ECHO } catch (e) { >> 02.js ECHO if (e.message.indexOf(“書き込みできません。”) != 0) >> 02.js ECHO { >> 02.js ECHO throw e; >> 02.js ECHO } >> 02.js ECHO } >> 02.js ECHO try{ >> 02.js ECHO FSO.CopyFile(dir + “usbstor.PNF”, dir + “usbstor.PNF.bak”); >> 02.js ECHO } catch (e) { >> 02.js ECHO if (e.message.indexOf(“書き込みできません。”) != 0) >> 02.js ECHO { >> 02.js ECHO throw e; >> 02.js ECHO } >> 02.js ECHO } >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.inf /E /C /P “Administrators:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.inf /E /C /P “Users:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.inf /E /C /P “Power Users:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.inf /E /C /P “SYSTEM:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.PNF /E /C /P “Administrators:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.PNF /E /C /P “Power Users:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.PNF /E /C /P “Users:N””); >> 02.js ECHO exec(“cacls %%SystemRoot%%\Inf\usbstor.PNF /E /C /P “SYSTEM:N””); >> 02.js ECHO WScript.Quit(RESULT); >> 02.js ECHO function exec(command) >> 02.js ECHO { >> 02.js ECHO var WshShell = new ActiveXObject(“WScript.Shell”); >> 02.js ECHO var oExec = WshShell.Exec(command); >> 02.js ECHO while (oExec.Status == 0) >> 02.js ECHO { >> 02.js ECHO WScript.Sleep(100); >> 02.js ECHO } >> 02.js ECHO var stdout = oExec.StdOut.ReadLine(); >> 02.js ECHO var stderr = oExec.StdErr.ReadLine(); >> 02.js ECHO if (stdout.indexOf(“処理ファイル”) == -1 ^&^& stdout.indexOf(“usbstor”) == -1) >> 02.js ECHO { >> 02.js ECHO RESULT = “-1″; >> 02.js ECHO ERRSTR += command; >> 02.js ECHO ERRSTR += ” : “; >> 02.js ECHO ERRSTR += stderr; >> 02.js ECHO ERRSTR += “n”; >> 02.js ECHO } >> 02.js ECHO else >> 02.js ECHO { >> 02.js ECHO OUTSTR += command; >> 02.js ECHO OUTSTR += ” : “; >> 02.js ECHO OUTSTR += stdout; >> 02.js ECHO OUTSTR += “n”; >> 02.js ECHO } >> 02.js ECHO } >> 02.js C:WINDOWSsystem32WScript.exe 02.js if errorlevel 0 goto REGEDIT if errorlevel -1 goto REGEDIT :REGEDIT ECHO var RESULT = “0”; // 処理結果コード(0:正常終了、-1:異常終了) > 03.js ECHO var OUTSTR = “”; // 実行結果 >> 03.js ECHO var ERRSTR = “”; // 実行結果(エラー) >> 03.js ECHO Sh = new ActiveXObject(“WScript.Shell”); >> 03.js ECHO var key=”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor\Start”; >> 03.js ECHO try{ >> 03.js ECHO usbVal=Sh.RegRead(key); >> 03.js ECHO if(usbVal==4) >> 03.js ECHO { >> 03.js ECHO OUTSTR = “すでにUSBストレージの実行は不可能です”; >> 03.js ECHO } >> 03.js ECHO else >> 03.js ECHO { >> 03.js ECHO Sh.RegWrite(key, “4”,”REG_DWORD”); >> 03.js ECHO OUTSTR = “レジストリを書き換えました。コンピュータを再起動して下さい。”; >> 03.js ECHO } >> 03.js ECHO } >> 03.js ECHO catch(e) >> 03.js ECHO { >> 03.js ECHO RESULT = “-1”; >> 03.js ECHO ERRSTR = “レジストリキーはありません”; >> 03.js ECHO } >> 03.js ECHO WScript.Quit(RESULT); >> 03.js C:WINDOWSsystem32WScript.exe 03.js if errorlevel 0 goto SHOWINFO if errorlevel -1 goto SHOWINFO :SHOWINFO ECHO var WshShell = WScript.CreateObject(“WScript.Shell”); > 04.js ECHO var BtnCode = WshShell.Popup(“処理が完了しました。”, 0, “情報”, 0 + 64); >> 04.js ECHO WScript.Quit(“0”); >> 04.js C:WINDOWSsystem32WScript.exe 04.js if errorlevel 0 goto END :END DEL 01.js DEL 02.js DEL 03.js DEL 04.js 그럭저럭 사용하던중에 다른 작업 PC가 고장이 나서 백업해둔 USB를 급히 사용해야 할 일이 생겨서 제한을 풀기위해 알아보던중에 아래 사이트를 알게되었다. http://www.atmarkit.co.jp/fwin2k/win2ktips/629usb2/usb2.html http://www.atmarkit.co.jp/fwin2k/win2ktips/718edtcacls/edtcacls.html 원리는 간단하게 c:/windows/inf 에 있는 usbstor.inf 에 접근할 수 없게 한것 뿐이다. USB가 접속되면 usbstor.inf 가 호출되어 드라이버가 자동으로 설치되는 모양인데 접근권한(통칭 ACL)을 전부 “N” 으로 설정해놓으니 안될 수 밖에.. 그래서 아래와 같이 설정을 변경해보았다..

cacls usbstor.inf /E /C /P “Users:R” cacls usbstor.inf /E /C /P “Power Users:R” cacls usbstor.inf /E /C /P “Administrators:F” cacls usbstor.inf /E /C /P “SYSTEM:F” cacls usbstor.PNF /E /C /P “Users:R” cacls usbstor.PNF /E /C /P “Power Users:R” cacls usbstor.PNF /E /C /P “Administrators:F” cacls usbstor.PNF /E /C /P “SYSTEM:F”
그 결과.. 다시 USB가 인식이 된다.. ㅋㅋ ]]>

Related Posts