Board logo

标题: [问题求助] VBS如何遍历指定注册表路径下的键值项和键值? [打印本页]

作者: 1078292299    时间: 2021-1-28 11:44     标题: VBS如何遍历指定注册表路径下的键值项和键值?

用VBS如何把 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 右边的键值项和键值遍历MsgBox输出?
作者: WHY    时间: 2021-1-28 21:40

本帖最后由 WHY 于 2021-1-28 22:34 编辑
  1. Rem On Error Resume Next
  2. Const HKLM = &H80000002
  3. Dim regPath, objReg
  4. regPath = "Software\Microsoft\Windows\CurrentVersion"
  5. Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\Root\Default:StdRegProv")
  6. EnumRegistry HKLM, regPath
  7. Function EnumRegistry(HKLM, regSubPath)
  8.     Dim arrName, arrType, s, i, regType, regValue
  9.     objReg.EnumValues HKLM, regSubPath, arrName, arrType                         '枚举注册表值名
  10.     If isArray(arrName) Then
  11.         s = ""
  12.         For i=0 To UBound(arrName)
  13.             regType  = GetRegType(arrType(i))                                    '获取类型
  14.             regValue = GetRegValue( HKLM, regSubPath, arrName(i), arrType(i) )   '获取注册表值
  15.             s = s & arrName(i) & vbTab & regType & vbTab & regValue & vbLf
  16.         Next
  17.         WSH.Echo regSubPath & vbLf & s
  18.     Else
  19.         WSH.Echo regSubPath
  20.     End If
  21.     objReg.EnumKey HKLM, regSubPath, arrName                                     '枚举注册表项
  22.     If isArray(arrName) Then
  23.         For i=0 To UBound(arrName)
  24.             EnumRegistry HKLM, regSubPath & "\" & arrName(i)    '递归
  25.         Next
  26.     End If
  27. End Function
  28. Function GetRegType(n)
  29.     Select Case n
  30.         Case 1 GetRegType = "REG_SZ"
  31.         Case 2 GetRegType = "REG_EXPAND_SZ"
  32.         Case 3 GetRegType = "REG_BINARY"
  33.         Case 4 GetRegType = "REG_DWORD"
  34.         Case 7 GetRegType = "REG_MULTI_SZ"
  35.         Case 11 GetRegType = "REG_QWORD"
  36.     End Select
  37. End Function
  38. Function GetRegValue( HKLM, regSubPath, regName, n )
  39.     Select Case n
  40.         Case 1
  41.             objReg.GetStringValue HKLM, regSubPath, regName, sValue
  42.             GetRegValue = sValue
  43.         Case 2
  44.             objReg.GetExpandedStringValue HKLM, regSubPath, regName, sValue
  45.             GetRegValue = sValue
  46.         Case 3
  47.             objReg.GetBinaryValue HKLM, regSubPath, regName, uValue
  48.             GetRegValue = Join(uValue, ",")
  49.         Case 4
  50.             objReg.GetDWORDValue HKLM, regSubPath, regName, uValue
  51.             GetRegValue = uValue
  52.         Case 7
  53.             objReg.GetMultiStringValue HKLM, regSubPath, regName, sValue
  54.             GetRegValue = Join(sValue, ",")
  55.         Case 11
  56.             objReg.GetQWORDValue HKLM, regSubPath, regName, uValue
  57.             GetRegValue = uValue
  58.     End Select
  59. End Function
复制代码

作者: 1078292299    时间: 2021-1-29 15:17

大哥牛皮,666




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2