RegDump

Sinn und Zweck dieses Scriptes ist das Vergleichen der lokalen Registry vor und nach dem Installieren einer Software.
Gerade große SW-Pakete bringen eine Reihe von einzelnen Setups mit sich, die als Prereq oder zur Laufzeit der SW gebraucht werden.
Diese zusätzliche Software soll erfasst werden, um dem Softwaremanagement einen besseren Überblickt über eingesetzte Produkte zu geben.

Nachstehendes Script ist NOCH NICHT fertig. Es fehlt der funktionierende Dateienvergleich
und damit das erstellen des Deltas.


 'option explicit
 
 DIM strcomputer, srcdir, nwresultfile, nwcontent, nwcontentneu, oargs,fehler
 DIM strKeyPath, subkey, arrSubKeys, wshell, fso, softid, regdmp, regdmp2, oreg
 DIM i
 
 const HKEY_CLASSES_ROOT   = &H80000000
 const HKEY_CURRENT_USER   = &H80000001
 const HKEY_LOCAL_MACHINE  = &H80000002
 const HKEY_USERS          = &H80000003
 const HKEY_CURRENT_CONFIG = &H80000004
 const HKEY_DYN_DATA       = &H80000005

 set wshell = createobject("wscript.shell")
 set fso = createobject("scripting.filesystemobject")
 strComputer = "."
 srcdir = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))
 

 set oargs = wscript.arguments

if oArgs.Count <1 then
wscript.echo VBCRLF & "! FEHLER !" & VBCRLF & "! Fehlender Parameter pre/post?! SOFTID?"
wscript.quit
End if
 
 
 regdmp = wshell.ExpandEnvironmentStrings("%TMP%") & "\regdmp.txt"
 regdmp2 = wshell.ExpandEnvironmentStrings("%TMP%") & "\regdmp2.txt"

 
 if oargs(0) = "pre" then prescan
 if oargs(0) = "post" then postscan
 
 'wscript.echo "C:\Windows\system32\cmd.exe /c findstr.exe" & " /I /V /G:" & regdmp & " " & regdmp2 & ">" &nwresultfile,1
 'regdmp2 = wshell.ExpandEnvironmentStrings("%TMP%") & "\regdmp2.txt"
 'wshell.run "findstr.exe" & " /I /V /G: " & regdmp & " " & regdmp2 & ">" &nwresultfile,1,true
 'end if

 sub prescan
 set regdmp = fso.createtextfile(regdmp,true)
 Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
          & strComputer & "\root\default:StdRegProv")
 
 strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
 oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

 
 For Each subkey In arrSubKeys
  on error resume next
  sDisplayName = wshell.Regread("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")
  fehler=error
    if fehler <>0 then
    regdmp.writeline ";" &subkey
 else
     regdmp.writeline sDisplayname & ";" & subkey
 end if
 sDisplayName=""
 Next
 end sub
 
 sub postscan
 softid = oargs(1)
 
 set regdmp2 = fso.createtextfile(regdmp2,true)

 Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
          & strComputer & "\root\default:StdRegProv")
 
 strKeyPath = "software\microsoft\windows\currentversion\uninstall" ' Root level
 oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

 
 For Each subkey In arrSubKeys
  on error resume next
  sDisplayName = wshell.Regread("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")
  fehler=error
   if fehler <>0 then
    'if sdisplayname="" then
    regdmp2.writeline ";" &subkey
 else
     regdmp2.writeline sDisplayname & ";" & subkey
 end if
 
 sDisplayName=""
 
 next
 
 end sub
 
 sub write difference
 set dmp1file = fso.opentextfile(regdmp),1
 set dmp2file = fso.opentextfile(regdmp2),2
 set nwresultfile = fso.opentextfile(srcdir&"regresult.txt"),2
 i=0
 
 dmp1file.readall
 dmp2file.readline(i)
 
 
 end sub
 wscript.quit

  • Donnerstag, 15 März 2018

Leave a comment

You are commenting as guest.