一、 需求
有時,我們希望USB存儲設備(移動硬盤、U盤、SD等等)能像軟盤一樣提供寫保護功能。
如何做到呢?
二、 現有軟件
有款叫做UsbWriteProtector的軟件(下載地址見后),可以實現我們需要的功能。
那它又是如何實現的呢?
三、 實現原理
從一本資料——USB_Write_Protect.en_us.pdf——可以了解到:
Windows XP SP2提供了一個特性, 只需要向注冊表中寫入一個值, 就可以做到對USB存儲設備進行寫保護。
——具體地說:
在Windows XP SP2上, 當USB存儲設備連接到系統時, 系統會檢查如下的項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies
如果存在一個名為WriteProtect,類型為REG_DWORD的值,并且值為1,
系統就會對該USB存儲設備進行寫保護, 直到斷開連接。
如果需要去掉寫保護屬性, 只能斷開設備, 并在再次連接前, 將該值設置為0。
UsbWriteProtector正是使用這一特性實現其功能的。
——從它對注冊表的修改即可看出。
四、 改進
—— 四、1
UsbWriteProtector完成的僅僅是注冊表操作,卻提供了一個只有2個選項的GUI界面。
通常使用方式如下:
啟動軟件,選中打開或者關閉,然后關閉這個軟件 —— GUI在這里用處不太大。
同時, 它的大小有190+K。
—— 四、2
USB_Write_Protect.en_us.pdf中提出另一種方法: 寫2個.reg文件來修改注冊表。
但是reg文件使用后都會分別彈出一個對話框, 也有點不方便。
—— 這里將其寫為批處理文件:
-------- ReadOnly.bat --------
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect /t REG_DWORD /d 1 /f
-------- ReadWrite.bat --------
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect /t REG_DWORD /d 0 /f
這樣直接雙擊運行, 會有一個控制臺窗口一閃而過, 就ok了。
這里有個小插曲: 最開始我模仿USB_Write_Protect.en_us.pdf的作法, 將批處理文件分別命名為:
——USB Write Protect On.bat
——USB Write Protect Off.bat
我覺得很清晰, 打開/關閉寫保護嘛。
發給女友使用時, 卻遭到疑問“到底哪個是只讀啊?”
才發覺這樣的命名, 對有背景的人員很清晰, 但對普通用戶卻不一定。
遂按其效果命名為: ReadOnly.bat和 ReadWrite.bat, 就清晰多了。
這是一個小例子, 說明合理命名是很重要的。
同時, 還提供一個查看當前狀態的批處理:
-------- Query.bat --------
@echo off
REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect
pause
這樣3個批處理與UsbWriteProtector相比,完成的功能是相同的。
哪種方案比較方便, 就見仁見智了。
相關鏈接:
——批處理打包下載
http://immature.googlecode.com/svn/trunk/iMmature/utility/USBWriteProtection/bin/USBWriteProtection.zipmd5:2D0F47EF59B47AD37608C59420BF910B
——批處理文件下載
http://immature.googlecode.com/svn/trunk/iMmature/utility/USBWriteProtection/bin/USBWriteProtection/——
USB_Write_Protect.en_us.pdf
http://www.cyberagentsinc.com/Forensic%20Accessories%20and%20Software/USB_Write_Protect.en_us.pdfmd5:029030B1BFDE87B6EAD58F119126EBA8
——UsbWriteProtector
http://download.pchome.net/utility/access/detail-139473.html
A7CB9977D7A4A09EE675BCA5F69138B1|usbwp.rar
B04C271A489D0CDA3D3D245526B1B30A|UsbWriteProtect.exe
http://www.greendown.cn/soft/11827.html
F48C3F57867BB3156DD4202B275D3B12|USBWriteProtector.rar
771F6332212DAA32CA11C6BC2C6D1A9E|UsbWriteProtect.exe

本
作品采用
知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。
轉載請注明 :
文章作者 - OwnWaterloo
發表時間 - 2009年04月01日
原文鏈接 -
http://www.shnenglu.com/ownwaterloo/archive/2009/04/01/write_protect_usb_devices_in_windows_xp_sp2.html
posted on 2009-04-01 18:28
OwnWaterloo 閱讀(1037)
評論(0) 編輯 收藏 引用