132 lines
5.7 KiB
Plaintext
132 lines
5.7 KiB
Plaintext
|
Regdiff is a tool that allows you to snapshot the registry, compare the
|
|||
|
snapshot to the current state, look at what the differences are using the
|
|||
|
registry editor, save the differences to a file, and later merge or unmerge
|
|||
|
the changes back into/from the registry. Such a tool is useful for quick
|
|||
|
resetup of applications you frequently have to reload after updating your
|
|||
|
NT system. Its also useful for simply finding out what any particular
|
|||
|
operation changes in the registry.
|
|||
|
|
|||
|
Here's how you would use regdiff to help you quickly reinstall excel:
|
|||
|
|
|||
|
1) load your new NT with fresh hives.
|
|||
|
|
|||
|
2) run
|
|||
|
regdiff -s c:\cleansnp
|
|||
|
this will save the current registry state into c:\cleansnp
|
|||
|
|
|||
|
3) now do your typical excel installation routine
|
|||
|
|
|||
|
4) Now that excel is all set run
|
|||
|
regdiff -d c:\cleansnp
|
|||
|
this finds out what differences there are between the current registry
|
|||
|
contents and your snapshot file c:\cleansnp.
|
|||
|
|
|||
|
5) Now, check out your changes using regedt32.exe and look at the
|
|||
|
HKEY_LOCAL_MACHINE\regdiff node. You will probably find "Add"
|
|||
|
and "Del" subkeys off of this node. The "Add" node shows all keys
|
|||
|
and values that were added to the registry since your snapshot and
|
|||
|
the "Del" node shows what has been removed. If the same value or
|
|||
|
key is in both nodes it means these parts have changed.
|
|||
|
At this point you may notice some random changes that took place
|
|||
|
in the registry since you last took your snapshot that have nothing
|
|||
|
to do with your installation actions. You can use regedt32.exe to
|
|||
|
edit the regdiff tree as needed so your diff information just
|
|||
|
contains what is pertinent.
|
|||
|
|
|||
|
6) Now save the diff information to a file. run:
|
|||
|
regdiff -w c:\exceldif
|
|||
|
|
|||
|
7) You may notice that you cannot delete this file. This is because it
|
|||
|
is loaded into the registry at this time. To unload it from the registry
|
|||
|
run:
|
|||
|
regdiff -r
|
|||
|
|
|||
|
8) Now you have a record of the exact changes that were made to the registry
|
|||
|
during your installation. Lets say you want to remove these changes
|
|||
|
from the registry. Run:
|
|||
|
regdiff -l c:\exceldif -u -r
|
|||
|
This just loaded the c:\exceldif diff info from the file into the registry
|
|||
|
and used that information to unmerge the changes from the registry. regdiff
|
|||
|
then removed/unloaded the diff information from the registry. An inspection of
|
|||
|
the registry will show all changes you made during installation have been
|
|||
|
removed. You may also see the progman group it created disappear.
|
|||
|
|
|||
|
9) Lets say you have now picked up a new NT with clean hives and you need
|
|||
|
to use excel via your email. You have the excel files on your disk but
|
|||
|
the registry is not set up so your double click on an email excel
|
|||
|
spreadsheet doesn't work. Run:
|
|||
|
regdiff -l c:\exceldif -m -r
|
|||
|
This replaces the changes referenced in the c:\exceldif file into the
|
|||
|
registry and then removes the diff information from the registry.
|
|||
|
|
|||
|
10)At this point you might want to install other apps. To get an
|
|||
|
accurate diff that is not dependent on your previous install do this:
|
|||
|
regdiff -l c:\exceldif -u // to remove your excel instalation changes
|
|||
|
install another app (say VC++)
|
|||
|
regdiff -d c:\cleansnp -w c:\vcppdif
|
|||
|
regdiff -l c:\exceldif -m // restores the excel changes.
|
|||
|
|
|||
|
11) Using this tool you can literally build up a batch file of all the
|
|||
|
diffs you want to have installed into your registry each time you
|
|||
|
pick up a new NT build.
|
|||
|
|
|||
|
12) If you want a little feedback from regdiff on what its doing during
|
|||
|
operation, you can specify the -v flag. If you think
|
|||
|
there is a bug, you can use the -@ flag to get extensive information
|
|||
|
on what regdiff is doing.
|
|||
|
|
|||
|
13) regdiff employs an inclusion and exclusion list to allow finer control
|
|||
|
over its operation. The default lists are set up to work well for
|
|||
|
general use but you may have some particular things you want to explore.
|
|||
|
To alter these lists create a text file that lists all the keys or values
|
|||
|
you want included or excluded and reference them on the command line
|
|||
|
along with the -i or -x flags. BE CAREFUL here. For instance, maybe
|
|||
|
you only want to snapshot a tiny part of the registry so your snapshot
|
|||
|
file is smaller. YOU SHOULD USE THE SAME INCLUSION LIST WITH YOUR DIFFS
|
|||
|
THAT YOU USED WITH YOUR SNAPSHOT! If your lists change between your
|
|||
|
snapshots, diffs, and merges, you may come up with erroneous results.
|
|||
|
Your lists can contain '?' characters for wild character matching.
|
|||
|
(Useful for \ControlSet005 type nodes.)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
regdiff usage:
|
|||
|
|
|||
|
-s <snapfile>
|
|||
|
save current registry contents to snapfile.
|
|||
|
-d <snapfile>
|
|||
|
create diff information from current registry state and <snapfile>.
|
|||
|
-l <difffile>
|
|||
|
load diff information into registry from <difffile>.
|
|||
|
-w <difffile>
|
|||
|
write diff information to <difffile> from registry when done.
|
|||
|
-e erase input file(s) after done.
|
|||
|
-m merge diff information into current registry.
|
|||
|
-u unmerge diff information from current registry.
|
|||
|
-r remove diff information from registry when done.
|
|||
|
-x <exceptions file>
|
|||
|
use <exceptions file> to bypass diff, merge or unmerge on certain keys.
|
|||
|
-i <inclusions file>
|
|||
|
use <inclusions file> to snap or diff only certain keys.
|
|||
|
-v verbose output on.
|
|||
|
-@ Debug mode.
|
|||
|
-b break on errors.
|
|||
|
-n neuter - don't really do merges/unmerges. (for safe testing)
|
|||
|
|
|||
|
<snapfile> and <difffile> should not have extensions on FAT partitions.
|
|||
|
diff information is kept in HKEY_LOCAL_MACHINE\regdiff
|
|||
|
|
|||
|
The default inclusions list is:
|
|||
|
HKEY_LOCAL_MACHINE\SYSTEM
|
|||
|
HKEY_LOCAL_MACHINE\SOFTWARE
|
|||
|
HKEY_CURRENT_USER
|
|||
|
|
|||
|
The default exceptions list is:
|
|||
|
HKEY_LOCAL_MACHINE\SYSTEM\Clone
|
|||
|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\CacheLastUpdate
|
|||
|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
|
|||
|
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet???
|
|||
|
|
|||
|
|
|||
|
|