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 thenwscript.echo VBCRLF & "! FEHLER !" & VBCRLF & "! Fehlender Parameter pre/post?! SOFTID?"wscript.quitEnd 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