深入解析设置磁盘写保护
(2010-07-11 15:56:02)
原来很多U盘有写保护开关,现在大多数没有了,USB中国风景名胜图片硬盘也大都没有这个开关。不过现在的Windows7下要设置移动盘只读也方便,原理就是利用系统内置的DISKPART命令。
一、使用内置的DISKPART命令。
现在很多人也想设置移动硬盘写保护以防止病毒,其实关于友情的名言diskpart命令提供了这个功能
插上移动盘,在diskpart命令行下:
list vol
察看磁盘列表,假设要设写保护的磁盘的第一个分区是H,用命令选中磁盘:
select vol h
然后设置写保护:
att vol set readonly
好了,这样这个移动硬盘就写保护了,插到其他电脑上依旧写保护。当然这样操作也可以
设置内置硬盘为写保护。
如果想去掉写保护,在diskpart下:
select vol H
att vol clear readonly
如果想去掉写保护,在diskpart下:
select vol H
att vol clear readonly
二、使用波特尔系统工具
为了使用简单方便,波特尔系统工具有了这样的功能,只有按一个按钮就行了。如果你安装了VISTA以上的操作系统,直接运行USBWDSK.EXE绿软件:
图
UsbWdsk.rar,下载地址:u.115/file/f186b3b4bb
如果系统没有安装Windows7,可以使用波特尔的PE工具盘,下载ISO镜像文件,刻录成为光盘。也可使用UltraISO制作成为可以起到U盘。将USB盘插在电脑中,点击UltraISO8月14日是什么情人节?的菜单:启动->写入硬盘,按“写入”,稍等几分种,这张“工具盘”就制作完成了。启动后操作和桌面的系统工具软件一样。
三、几点说明
1、只有2003 sp2以上版本的diskpart支持这样操作(vista/win7的diskpart完全支持),xp的diskpart不支持。但在高版本的diskpart完后,在xp下写保护也是有效。
2、如果是GPT(动态)分区表的磁盘,支持每个分区单独设置写保护,但操作系统在动态分区不能启动,所以不常用。
3、属性为移动盘(常见u盘就是移动属性)可以用伴手礼disk方式设置写保护,(只能sel disk方式,不能Sel Volume)但插到其它电脑上写保护无效,所以意义不大。好在U盘可以量产为固定盘,只要有合适的量产工具就行。量产为固定盘,还可以支持分区,当然,损失一些所谓“在线挂载和解挂”等一般用户少用的特性也无所谓。
1、只有2003 sp2以上版本的diskpart支持这样操作(vista/win7的diskpart完全支持),xp的diskpart不支持。但在高版本的diskpart完后,在xp下写保护也是有效。
2、如果是GPT(动态)分区表的磁盘,支持每个分区单独设置写保护,但操作系统在动态分区不能启动,所以不常用。
3、属性为移动盘(常见u盘就是移动属性)可以用伴手礼disk方式设置写保护,(只能sel disk方式,不能Sel Volume)但插到其它电脑上写保护无效,所以意义不大。好在U盘可以量产为固定盘,只要有合适的量产工具就行。量产为固定盘,还可以支持分区,当然,损失一些所谓“在线挂载和解挂”等一般用户少用的特性也无所谓。
四、深度解析
微软在卷管理驱动中实现了磁盘的只读属性。在DDK中,透露了下面一个数据结构:
typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
//
// Specifies the attributes that
// are to be applied to the volume
//
ULONGLONG GptAttributes;
//
// Indicates whether this is to be
// undone when the handle is closed
//
BOOLEAN RevertOnClose;
// Indicates whether this is to be
// undone when the handle is closed
//
BOOLEAN RevertOnClose;
//
// Indicates whether the attributes
// apply to all the volumes on the
// disk that this volume resides on
// Required if the disk layout is MBR
//
BOOLEAN ApplyToAllConnectedVolumes;
// Indicates whether the attributes
// apply to all the volumes on the
// disk that this volume resides on
// Required if the disk layout is MBR
//
BOOLEAN ApplyToAllConnectedVolumes;
//
// For alignment purposes.
//
USHORT Reserved1;
ULONG Reserved2;
// For alignment purposes.
//
USHORT Reserved1;
ULONG Reserved2;
} VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
不说再见欧可欣的双重身份
#endif // NTDDI_VERSION >= NTDDI_WINXP
其中GptAttributes是文档化了的,有下列四项属性。只是这个名称有意思,可能微软原来只是打算在GPT卷中才支持这个属性。
GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY
GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY
GPT_BASIC_DATA_ATTRIBUTE_HIDDEN
GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER。
RevertOnClose意思是该设置是否永久有效。ApplyToAllConnectedVolumes指示是否GptAttributes是否对于所有的卷有效,这样需要在MBR写入标志信息。后面两个所谓对齐(alignment)目的的属性未公开,如果传NULL或者0,或者其他瞎猜的参数向卷句柄发IO控制码,将返回“参数无效”的错误。
该函数在reactos开源项目中未实现。
个人瞎猜,由于传统卷中,微软开始没有考虑实现只读属性,有没有保留多余的标记位,因此,只好实现全盘的只读,但是MBR也没有预留标记位,因此只好将标记信息写入“不用”的保留磁盘扇区,这似乎不像微软的一贯传统。
GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY
GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY
GPT_BASIC_DATA_ATTRIBUTE_HIDDEN
GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER。
RevertOnClose意思是该设置是否永久有效。ApplyToAllConnectedVolumes指示是否GptAttributes是否对于所有的卷有效,这样需要在MBR写入标志信息。后面两个所谓对齐(alignment)目的的属性未公开,如果传NULL或者0,或者其他瞎猜的参数向卷句柄发IO控制码,将返回“参数无效”的错误。
该函数在reactos开源项目中未实现。
个人瞎猜,由于传统卷中,微软开始没有考虑实现只读属性,有没有保留多余的标记位,因此,只好实现全盘的只读,但是MBR也没有预留标记位,因此只好将标记信息写入“不用”的保留磁盘扇区,这似乎不像微软的一贯传统。
这个数据结构有NTDDI_VERSION >= NTDDI_WINXP这样一句,表示必须要XP以上NT操作系统支持,因此,使用上述方法标记只读的磁盘,只是在XP以上的NT系统有效,对于Windows2000起点中文网站,Linux等系统无效,对于绕过卷管理驱动的写比如 GHOST32也无效。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论