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