用AU3能做到修改硬盘的活动与否吗?[已解决]
本帖最后由 a000000 于 2010-3-8 09:22 编辑7524将磁盘分区标为活动的,或者将磁盘分区标为不活动的 估计高手是能修改的 应为autoit3 是脚本 活动与非活动的区别在于各自分区表的第一个字节,活动分区第一个字节为0x80,非活动为0x00,那么是否可以根据这个区别来将非活动转换为活动呢?~
Run("diskpart /s active.txt")
#cs
active.txt 内容如下
select disk 0
select partition 1
active
exit
#ce
gapkiller 发表于 2010-3-7 11:17 http://www.autoitx.com/images/common/back.gif
还是用了txt,能不能单文件做到这点? 回复 5# a000000
4#可行的话你增加个写入临时文件的代码不就解决了 还是用了txt,能不能单文件做到这点?
a000000 发表于 2010-3-7 12:34 http://www.autoitx.com/images/common/back.gif
FileInstall() #include <SetupApi.au3>
Const $tagPARTITION_TABLE = "byte MbrData;byte ActiveFlags;byte StartTrack;short StartSC;byte FileSystem;byte EndTrack;short EndSC;dword LogicalStartSector;dword SectorsCount"
Local $hDisk, $pBuffer, $tBuffer, $fResult, $iDesiredAccess, $fActivate = 1
$pBuffer = _CM_Heap_Alloc(512)
$tBuffer = DllStructCreate($tagPARTITION_TABLE, $pBuffer)
$iDesiredAccess = bitOR($GENERIC_READ, $GENERIC_WRITE)
$hDisk = _CM_Create_File("\\.\H:", $iDesiredAccess, 3, 0, 3, 0)
_CM_Device_IO_Control($hDisk, 0x90018, 0, 0, 0, 0)
_CM_Read_Device($hDisk, $pBuffer, 512)
_CM_Device_IO_Control($hDisk, 0x9001C, 0, 0, 0, 0)
_CM_Close_Handle($hDisk)
If ($fActivate) Then
DllStructSetData($tBuffer, "ActiveFlags", 0x80) ; Activate the partition
Else
DllStructSetData($tBuffer, "ActiveFlags", 0x00) ; Un-activate
EndIf
$hDisk = _CM_Create_File("\\.\H:", $iDesiredAccess, 3, 0, 3, 0)
_CM_Device_IO_Control($hDisk, 0x90018, 0, 0, 0, 0)
_CM_Write_Device($hDisk, $pBuffer, 512)
_CM_Device_IO_Control($hDisk, 0x9001C, 0, 0, 0, 0)
_CM_Close_Handle($hDisk)
_CM_Assign_Var($tBuffer, 0, _CM_Heap_Free($pBuffer))
Msgbox(0, "", "Done~!") 建议操作硬件首先了解 pusofalse 超版出品的 SetupApi.au3 库 终于逼得pusofalse 写出例子了,哈哈 谢谢了,终于找到这个例子 谢谢pusofalse 那改成不活动的呢??{:face (332):} 谢谢了,认真学习学习!
页:
[1]