如何获取一块或多块硬盘的大小容量
刚学au3,很弱,望大家帮助指教,谢谢如题
用DriveSpaceTotal没法获取未分配的空间
注册表里有这个键值吗? $var = DriveSpaceFree( "c:\" )
MsgBox(4096, "C:的可用空间是:", $var & " MB") 如果用楼上的理解,直接用这个$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC & "|"
If Not @error Then
For $i = 1 To $cppf
Local $pf,$dif
$begin = TimerInit()
$pf = $cppf[$i]
$kj = DriveSpaceTotal($pf & "\")
$kykj = DriveSpaceFree($pf & "\")
$dif = TimerDiff($begin)
IniWrite(@ScriptDir & "\空间.txt", "磁盘空间" , "检测时间 "&$sxdx&"反应时间 "&$dif, $pf & "盘 全部空间为: " & $kj & " 可用空间为: " & $kykj)
Next
EndIf 很好,很强大:face (37): 谢谢大家啊
可是我问的是硬盘的总容量,可能还会有未分配的空间 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\STORAGE\Volume下有所有volume的信息
这个信息包含分区起始位置和大小
比如
1&30a96598&0&SignatureB6E1B6E1Offset1389AF3200Length9C4595A00
其中:
Signature B6E1B6E1 这个是硬盘标记,也就是引导区0x1B4开始的4字节,靠这个能定位属于哪个盘。
Offset 1389AF3200 这个是起始字节数,除掉0x200就是扇区号
Length 9C4595A00 这个是分区长度,也是除掉0x200转为扇区数
至于扇区数怎么转成硬盘大小,应该有个公式计算的
时间有限,仅提供思路
希望楼主研究完了回来分享下成果 学习下楼上的代码,不过,有点看不懂
页:
[1]