Windows 使用WMI获取注册表配置单元的大小
我想使用WMI和VBScript找出注册表中配置单元的文件大小。这就是我到目前为止所做的:Windows 使用WMI获取注册表配置单元的大小,windows,vbscript,registry,wmi,Windows,Vbscript,Registry,Wmi,我想使用WMI和VBScript找出注册表中配置单元的文件大小。这就是我到目前为止所做的: const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_ strComputer & "\root\cimv2:StdRegProv") strKeyPath = "System\
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
这给了我一个正确的列表,但是我需要得到文件的大小。实现这一目标的最佳方式是什么
strRFSpec
而不是dwValue
“\Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT”
)转换为文件系统对象可以理解的strFSpec
(例如“C:\Documents and Settings\NetworkService\NTUSER.DAT”
)strFSpec
WScript.Echo goFS.GetFile(strFSpec).Size
strRFSpec
到strfsspec
的转换可能需要比使用硬编码字符串的简单Replace()
更大的工作量。您的文档和设置
或窗口
可以在F:\
上运行。因此,您可能需要寻找将“\Device\HarddiskVolume…
映射到驱动器号的WMI类,在包含\system\
的strFSpecs
上使用%windir%,或者询问WshShell.SpecialFolders(“MyDocuments”)
获取驱动器号。由于我的设置很简单,我无法给出进一步的测试建议
strRFSpec
而不是dwValue
“\Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT”
)转换为文件系统对象可以理解的strFSpec
(例如“C:\Documents and Settings\NetworkService\NTUSER.DAT”
)strFSpec
WScript.Echo goFS.GetFile(strFSpec).Size
从
strRFSpec
到strfsspec
的转换可能需要比使用硬编码字符串的简单Replace()
更大的努力。您的文档和设置
或窗口
可以在F:\
上运行。因此,您可能需要寻找映射的WMI类。”\Device\HarddiskVolume…
到驱动器号,在包含\system\
的strFSpecs上使用%windir%,或询问WshShell.SpecialFolders(“MyDocuments”)
获取驱动器号。由于我的设置很简单,我无法给出进一步的测试建议。你的意思是我应该用“C:\”或任何给定的驱动器号查找/替换“\Device\HarddiskVolume1\”,然后打开该路径?@Lars-对于概念验证脚本,对于生产版本,简单的替换(strRFSpec,“\De…”,“C:\”
可能是可以的,我更喜欢更可靠的查找(WMI,%windir%,SpecialFolders)。字符串替换确实有效,尽管我仍然对您的“生产”示例感到困惑。你能用一个更完整的例子详细说明一下吗?你的意思是我应该用“C:\”或任何给定的驱动器号来查找/替换“\Device\HarddiskVolume1\”,然后打开该路径吗?@Lars-对于概念验证脚本,对于生产版本,一个简单的替换(strRFSpec,“\De…”,“C:\”
可能是可以的,我更喜欢更可靠的查找(WMI,%windir%,SpecialFolders)。字符串替换确实有效,尽管我仍然对您的“生产”示例感到困惑。你能用一个更完整的例子详细说明一下吗?