我想使用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
这给了我正确的列表,但后来我需要获取文件大小。实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
strRFSpec
代替dwValue
"\Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT"
)转换为可理解为FileSystemObject的strFSpec
(例如"C:\Documents and Settings\NetworkService\NTUSER.DAT"
)strFSpec
WScript.Echo goFS.GetFile(strFSpec).Size
(在Win XP下测试)
已添加(wrt评论):
从strRFSpec
到strFSpec
的转换可能需要比使用硬编码字符串的简单Replace()
更多的努力。您的Documents and Settings
或WINDOWS
可以F:\
生效。因此,您可能需要查找将"\Device\HarddiskVolume...
映射到驱动器号的WMI类,以使用包含strFSpecs
的{{1}}上的%windir%,或者询问\system\
一封驱动器的信。由于我的设置很简单,我无法提供进一步测试的建议。