请教关于WinPE下如何获取硬盘信息
本帖最后由 norby 于 2011-4-25 19:22 编辑我就这么点钱,全拿出来了。
问题其实和AU3本身的关系不大,主要是PE环境和WMI的操作。
我的目的是要实现在PE下获取硬盘的详细信息,包括硬盘型号、全部分区、盘符、卷标、文件系统、容量、可用空间等信息,包括未指定盘符的分区及卷标,例如Win7下默认的100MB隐藏分区。
AU3内置的函数没法获取这些信息(好像是,反正帮助文件里面没查到)
我之前是使用WMI来获取信息,而且很麻烦,用了四个类,Win32_DiskDrive、Win32_logicaldisk、Win32_LogicalDiskToPartition、Win32_DiskPartition,不过最终也没实现获取未指定盘符的分区的卷标这个功能。
好不容易实现了部分功能,兴高采烈的放到PE下测试,结果只有Win32_DiskDrive对象能够使用,而且信息不全,比如硬盘型号就获取不到。其他的全都不能用。差点吐血。
我使用的是Win7 PE,版本号6.1。已经确认PE系统已经正常识别了所有的硬盘和分区。
我估计可能是因为PE下加载的WMI控件不完全,但是我又不会使用其他方法,所以悬赏求助。
方法不限,只要能达到目的。
另外,我是刨根问底儿栏目组的,所以希望大家不吝赐教,关于系统底层的线索越多越好。
敬谢! _WinAPI_GetDiskFreeSpaceEx
_WinAPI_GetDriveBusType
_WinAPI_GetDriveType
_WinAPI_GetDriveGeometryEx
_WinAPI_GetDriveNumber 又是你!?
爱死你了!
不过好像还是不能获取隐藏分区和卷标
其实关键问题就在隐藏分区上,否则直接用DriveGetLabel之类的内置函数就够了。
而且WMI还能判断是否为引导区,这几点对于防止用户误将系统区格式化很重要,所以我才要极力实现这几个功能。
另外,_WinAPI_GetDriveGeometryEx在Win7下报错
我大致扫了一眼,_WinAPI函数里面,对获取磁盘信息的函数只有这么几个 http://www.autoitx.com/forum.php?mod=viewthread&tid=18361&fromuid=7639113 WMI,头疼
API,头疼...
下载30块,头疼...
攒钱中... 本帖最后由 norby 于 2011-4-24 11:56 编辑
先下载《纯AU3读硬盘分析分区 -返回数组 及卷.au3》
再下载《SetUI.au3》
再下载《SetupAPI.au3》
再下载《LocalSecurityAuthority.au3》
收费复收费,收费何其多......
我到不是抱怨什么,不过这种模式对AU3的发展真的利大于弊吗? 最终结果是:
ReDim $Partition
ReDim $Partition[^ ERROR
我自己慢慢刨坟吧,往祖坟上刨,先结账给分 程序报错是因为我的笔记本上有读卡器,被识别为硬盘
而没有分区信息,导致程序在重新定义数组时出错。
即:ReDim $Partition
继续刨坟,找隐藏分区的卷标...... 之前不能用_WinAPI_GetDriveGeometryEx,是因为权限的原因...
Win7下万恶的账户控制...
顺便提醒一下大家,处理硬件信息一般都需要较高的权限,用Win7的用户别忘了使用“以管理员身份运行” _WinAPI_AdjustTokenPrivileges 楼主的研究精神真的值得佩服。{:face (396):} 最终结果是【放弃】
工期太紧了,只得另辟捷径,在Win7 PE中加载完整版的WMI
但是太TMD不甘心了,有时间一定要恶补一下API
结贴前特别感谢一下3mile! 为什么不能修改主题了?
页:
[1]