DOWNLOAD THE CODE:
Download the Code 40714.zip

Place ApplyReg.vbs, your registry file, and your input file on the computer from which you'll run ApplyReg.vbs (which I call the source computer). Make sure that the source computer has WSH 5.6 installed. ApplyReg requires WSH 5.6 because it relies on the WshNamed object and the WScript object's StdOut property. These two features aren't available in earlier versions of WSH. You can download WSH 5.6 for Windows 2000, Windows NT 4.0, Windows Me, and Windows 98 from http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.asp. Windows Server 2003 and Windows XP already include WSH 5.6. However, Microsoft released a build update for WSH 5.6 in XP. You might want to download and install that update if you haven't done so already.

The source computer and all the target computers require WMI. The source computer requires WMI to make a remote connection to each target computer's WMI repository. Each target computer needs WMI's Registry Provider (StdRegProv) to make the registry updates. All computers running WMI have StdRegProv in the root\default namespace.

Except for NT 4.0 and Win98, all Windows OSs include WMI. You can download WMI CORE 1.5 for Win98 from http://msdn.microsoft.com/library/default.asp?url=/downloads/list/wmi.asp. The WMI CORE 1.5 download for NT 4.0 isn't available on the Microsoft site, so I've included it in the 40714.zip file.

Testing the Script in the Lab
After you have your lab set up, you can test ApplyReg.vbs. As an example, let's apply a registry file named update.reg to update the registry of the target computers listed in the input file named computers.txt. After you create update.reg and computers.txt following the instructions I gave previously, copy ApplyReg.vbs, update.reg, and computers.txt to a directory. Open a command-shell window, change from the current directory to the directory that contains the three files, and type

cscript applyreg.vbs
   /r:update.reg /f:computers.txt

(Although this command appears on two lines here, you would enter it all on one line when you type it on the command line.) Press Enter. ApplyReg.vbs applies the changes specified in update.reg to all the machines in computers.txt and provides a report that states whether the update was successful. The report's unique filename appears after the script has finished creating it. After the test run, make absolutely sure that the update didn't damage the registry or interrupt any target computer's normal operation.

Next, on a test computer not listed in computers.txt, apply update.reg manually. One way to do this is to navigate in Windows Explorer to the folder that contains update.reg and double-click the file. Compare the manual registry modifications with the registry modifications that ApplyReg.vbs automatically deploys.

Running the Script in Production
If ApplyReg.vbs is successful in the lab, you can begin deploying the update in your production network. I suggest that you start small by updating just a handful of target computers in your production network. Verify that all the target production computers function properly after the update. If all the target computers check out, you can slowly increase the number of target computers. Check the report after each script run. The report will inform you whether a computer was unreachable, whether the input list had an incorrect DN, or whether another error prevented access to the remote registry. You can use the report's information to determine which computers require additional runs of ApplyReg.vbs. If you can't access a remote registry because of a permission problem, verify that you have administrator or equivalent permissions on the remote computer. By default, you must have administrator rights to perform remote registry updates. For more information about remote registry permissions, see the Microsoft article "How to Restrict Access to the Registry from a Remote Computer" (http://support.microsoft.com/?kbid=153183).

Prev. page     1 [2] 3 4     next page



You must log on before posting a comment.

If you don't have a username & password, please register now.

Reader Comments

Can this same script be used to just reada remote registries and generate a report?

rsharma

Where is the link to the 40714.zip file referneced above. I can not find any such link.

Steven Sutherland

Enjoyed the article, I think ApplyReg.vbs could become(IS)a valuable utility. However, after I entered 40714 (Enter 40714 in the InstantDocID text box, click the Download the Code link) I'm unable to find this link on the page. What am I overlooking ?? My co-worker has the subscription and she doesn't see it either.

Michael Radzymski

I could not find the 'download the code' link mentioned in this article....

Dale

In what situation would you use ApplyReg.vbs, and how common is it use in networks.

lewis bailey

Since most environments are not strictly microsoft ad, how would you modify the script to use netbios names instead of using the fqdn?

Louis

<P>I very much enjoyed this article about updating remote registries. I am always looking for articles like this that show more advanced scripting because I write a lot of VBScripts. I reviewed ApplyReg.vbs and just want to make a couple of remarks. </P>

<P>When I write scripts that perform actions on a series of remote computers, I also have a function that checks whether the remote computer is reachable. Instead of using Ping and reading the output to determine whether the remote machine answered, I prefer to use the Win32_PingStatus WMI class, which is available in Windows XP and Windows Server 2003, for a couple of reasons. First, I think that this method is a more elegant approach to this task. Second, we work in an environment with computers in 5 different countries in Europe, all of which use their local language on their machines. Writing a script that reads the output of a command-line command is difficult when multiple languages are involved.</P>

The other thing I would like to mention is that NetBIOS or Fully Qualified Domain Names (FQDNs) are always easier to remember than distinguished names (DNs). I wrote scripts that used a text file with server NetBIOS names as the input file. I then used ADO to make an Active Directory (AD) search when I need the DN of the server. Because a small function looks up the DN, you don’t have to prepare the input file that you suggested with the DN already in the text file. Using a function to get the DN has another slight advantage: You can reuse the function in every script that requires a DN.

<P><B>A note from Ethan:</B> I’m aware of the Win32_PingStatus class, and I agree with you that this is the best approach. Just to give you some history, I specifically choose the approach I took because the Windows Resource Kit team originally asked me to write these scripts and the team told me that I must make the tool work in a pure Windows 2000 environment. I couldn't even rely on having a Windows XP client for running the script. As a result, I went with the non-localized approach of reading the "reply from..." message. Your approach is much better when you can assume that one client is running Windows XP.</P> <P>You make another great point about using DNs instead of FQDNs or NetBIOS names in the script. Again, a little history is in order. The goal was to take the output from another script as the input for the ApplyReg script. The output from the other script was the DNs of all domain controllers in a domain. If you get a chance, take a look at the two white papers that I reference in the article. The scripts, including ApplyReg, were written specifically to support the security goals delineated in the white paper.</P>

Stefan

Hi! I´ve enjoyed a lot reading this article because it helped me very much. I just have one question to make to you that is what if a computer in my network is not available at the time i´m updating the registry´s, the script creates a loop that when the machine is available it sends the new keys or if not how can i resolve this issue???

Thanks a lot!!!

Mario Raposo

Can this script be used to change permissions on reg keys?

JC

Ethan--excellent script, I am now using it all the time.

One problem however... When the CreateDWORD subroutine converts the hex value using CInt, it can't handle large numbers. For example, it will fail converting the hex value '00010000', and therefore will not write that value to the registry. I resolved this by changing CInt to CLng.

mvanwely

Article Rating 5 out of 5

I cant find your sample AAA123Test!!!.reg

Can u direct me there?

Anonymous User

Overkill, for what is essentially a very simple procedure

Anonymous User

Article Rating 1 out of 5

I am getting the following error "Report records processed: C:\Documents and Settings\spilmanr\My Documents\Tools\Remote Registry Tool\apply reg.vbs(469, 3) Microsoft VBScript runtime error: Invalid procedure call or argu ment: 'Mid'"

Anyone help?

Anonymous User

Article Rating 5 out of 5

 
 

ADS BY GOOGLE