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 でテスト済み)

追加 (書き込みコメント):

strRFSpecからへの変換には、ハードコードされた文字列を使用strFSpecする単純な変換よりも多くの労力が必要になる場合がありReplace()ます。あなたDocuments and SettingsまたはあなたWINDOWSはに住むことができますF:\。そのため、ドライブ文字にマップされている WMI クラスを探すか、"\Device\HarddiskVolume...%windir% をstrFSpecs含む\system\で使用するかWshShell.SpecialFolders("MyDocuments")、ドライブ文字を要求する必要があるかもしれません。私のセットアップは単純なので、それ以上の - テスト済みの - アドバイスはできません。

于 2013-02-08T20:52:07.037 に答える