Option Explicit Dim objFSO,objTxt,objShell Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set objTxt = objFSO.OpenTextFile("Reg_Show_Values1.txt", ForAppending, true, -2) Set objShell = WScript.CreateObject("WScript.Shell") Dim strComputer 'ホスト名(ローカル コンピュータ) strComputer = "." 'HKLM = &H80000002 ハイブを指定 Const HKLM = &H80000002 'Const HKCU = &H80000001 'データ型指定 Const REG_SZ = 1 Const REG_EXPAND_SZ = 2 Const REG_BINARY = 3 Const REG_DWORD = 4 Const REG_MULTI_SZ = 7 Dim strKeyPath 'キーを指定 strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32" 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\AGP 'レジストリのエントリ値を読み取る 'oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 'strValue - レジストリ エントリの値を格納する出力パラメータ ShowRegValues HKLM objTxt.Close objShell.Run "Reg_Show_Values1.txt" Set objTxt = Nothing Set objFSO = Nothing Set objShell = Nothing '********************************************************* 'Sub ShowRegValues '********************************************************* Sub ShowRegValues(strHive) Dim objReg ' オブジェクト Regestryプロバイダ Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") Dim strRegHive 'ハイブ名 If strHive = &H80000002 Then strRegHive = "HKLM" If strHive = &H80000001 Then strRegHive = "HKCU" objTxt.WriteLine "============================================================" objTxt.WriteLine strRegHive & "\" & strKeyPath objTxt.WriteLine "============================================================" Dim arrValueNames 'レジストリ値の名前の配列を保持 Dim arrValueTypes 'レジストリ値のデータの種類の配列を保持 objReg.EnumValues strHive, strKeyPath, arrValueNames, arrValueTypes Dim i, j ,k For i = 0 To UBound(arrValueNames) Dim myValue objTxt.WriteLine "Value Name : " & arrValueNames(i) Select Case arrValueTypes(i) Case REG_SZ objTxt.WriteLine "Data Type : String" objReg.GetStringValue strHive,strKeyPath,arrValueNames(i), myValue objTxt.WriteLine "データ : " & myValue Case REG_EXPAND_SZ objTxt.WriteLine "Data Type : Expanded String" objReg.GetExpandedStringValue strHive,strKeyPath,arrValueNames(i), myValue objTxt.WriteLine "データ : " & myValue Case REG_BINARY objTxt.WriteLine "Data Type : Binary" objReg.GetBinaryValue strHive,strKeyPath,arrValueNames(i), myValue objTxt.Write "データ(Hex): " For k = 0 To UBound(myValue) objTxt.Write Hex(myValue(k)) & "," Next objTxt.WriteBlankLines(1) Case REG_DWORD objTxt.WriteLine "Data Type : WORD" objReg.GetDWORDValue strHive,strKeyPath,arrValueNames(i), myValue objTxt.WriteLine "データ : " & myValue objTxt.WriteLine "データ : " & Hex(myValue) & "(Hex)" Case REG_MULTI_SZ objTxt.WriteLine "Data Type : Multi String" objReg.GetMultiStringValue strHive,strKeyPath,arrValueNames(i), myValue For j=0 To UBound(myValue) objTxt.WriteLine "データ : " & myValue(j) Next End Select objTxt.WriteBlankLines(1) Next End Sub