Hack 3 Find and Replace Registry Keys from a Command Line


Using the Regfind utility, you can easily
search the Registry for a value, regardless of the key, and replace
it.
Regfind (from the Windows 2000 Server Resource Kit) can be an
invaluable tool when you need change a Registry key
that you know the
value for but when do not necessarily know the
full
path. Recently tasked with changing the hardcoded DNS server IP on
all the servers in our organization, I was pleasantly surprised when
I located this gem. The problem with trying to change the DNS server
entry in the Registry is that all the IP parameters are broken up by
a hashed ID. The ID references several things, but most of them have
to do with the network card. Regfind allows you to search a set of
subkeys in the Registry for a specific value and, when found, replace
it. Another real beauty of this program is that it will work
remotely; all you need to do is supply it with a list of machines and
let it go. Using a list of computer names (generated from SMS, Server
Manager, or AD Users and Computers), combined with two batch files,
you can make sweeping changes in a dynamic environment.
The Code
Here's an example of how to change the DNS server
entry on all servers in your organization. First, create a batch file
called Regchange2.bat with the following syntax:
regfind -m \\%1 -p HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetServices\Tcpip\parameters "OLDIP" -r "NEWIP"
You will obviously want to replace OLDIP
with the old DNS server IP and replace
NEWIP with the new DNS server IP.
Now, create a second batch file called
regchange1.bat with the following syntax:
for /F %%A in (servers.txt) do (call regchange2.bat %%A)
This searches the servers.txt file
for computer names and passes them to the
regchange2.bat file as a command-line argument.
Now you need to create a list file for your batch files to use.
Create a listing of servers that need to have their DNS
IP's changed and save that list as
servers.txt. An SMS report or a copy/paste from
the server manager will suffice, or you can create the file manually
if you like.
Running the Hack
Now, simply run the regchange1.bat batch
file by calling it from a logon script and watch
all your servers have their IP settings changed!
This is just one simple example of how to use Regfind. There are many
command-line arguments, so please examine those to meet your needs.
Donnie Taylor