1

我想使用 WMI 和 VBScript 找出注册表中配置单元的文件大小。这是我到目前为止所拥有的:

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_ 
    strComputer & "\root\cimv2:StdRegProv")
strKeyPath = "System\CurrentControlSet\Control\Hivelist"
objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrVals, arrTypes
WScript.Echo "Values under System\CurrentControlSet\Control\Hivelist"
For Each val In arrVals
    objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, val, dwValue
    WScript.Echo dwValue
Next

这给了我正确的列表,但是我需要获取文件大小。实现这一目标的最佳方法是什么?

4

1 回答 1

1
  1. 为避免类型前缀欺诈和无意义的变量名,请使用strRFSpec而不是dwValue
  2. 将注册表文件规范(例如"\Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT")转换为strFSpecFileSystemObject 可以理解的(例如"C:\Documents and Settings\NetworkService\NTUSER.DAT"
  3. 检查存在和可访问性strFSpec
  4. WScript.Echo goFS.GetFile(strFSpec).Size

(在Win XP下测试)

添加(写评论):

strRFSpecto的转换可能比使用硬编码字符串strFSpec的简单转换需要更多的努力。Replace()你的Documents and Settings或你的WINDOWS可以继续生活F:\。因此,也许您必须寻找映射"\Device\HarddiskVolume...到驱动器号的 WMI 类,以在 contains 上使用 %windir%strFSpecs\system\询问WshShell.SpecialFolders("MyDocuments")驱动器号。由于我的设置很简单,我无法提供进一步的 - 经过测试的 - 建议。

于 2013-02-08T20:52:07.037 回答