Is your server running slowly? Check with SolarWinds ipMonitor
Get a free evaluation copy of ipMonitor
Contents for Ezine 64 - Writing to the Registry
It's an open secret that I have few disclaimers on my site. So when I suddenly say, watch out, be careful with the registry, then I hope that you will sit up and take
notice. In my experience people who edit the registry go through these 5 stages:
- Fear of the new registry language
- Awe at the power of Regedit
- Complacency - I can do anything
- Panic
Respect for the Registry
Now I never thought that I would reach the Panic stage with Regedit. Guy thought that he knew it all, then one day I deleted a whole hive, a huge chunk of the registry. When the machine rebooted, Windows
started, but the machine was like a lame duck. If only I had exported the registry I could have repaired it. So, even 'Gung-ho Guy' now exports the registry before undertaking a new project.
The secret of adding new keys and values with .RegWrite is to practice with harmless registry keys before embarking on more dangerous but exiting projects.
If you are looking for handy network utilities, try some of the free downloads at
Tools4Ever
You may have noticed a pattern with my scripts. Each script has two parts, a clear practical goal, and a VBScript learning point. This week the goal is to add a welcome message to the registry,
the result will display in the Logon dialog box. While the learning point is
to master the .RegWrite method. (You may remember that we experimented with .RegRead in ezine 62.)
I want to begin with a registry change that does not require a reboot. The goal of this script is to add a welcome message to the logon dialog box. To save logging off, you can see the very same
message by pressing Ctrl Alt Delete. When the Windows Security dialog box appears, read the top bar and see your strMessage.
The learning rationale is to practise writing to the registry, but only by experimenting with a risk-free areas. The tactics are to create a new key called 'Welcome', then assign it a string
value, for example, 'This is Guy's Kingdom'. Before we examine the .RegWrite syntax, you may notice that WScript creates a Shell object - objShell.
The .RegWrite method has three parts (arguments):
- The name of the registry Key that we are creating or writing to. Note the slashes " \ ". In particular notice that there is a " \ " after Winlogon\, but
not after Winlogon\Welcome.
- The value itself e.g. "Guy's Kingdom"
- The registry key type, e.g. REG_SZ (string) or REG_DWORD.
Example: objShell.RegWrite "HKLM\SOFTWARE\Microsoft\" _ & "Windows NT\currentVersion\Winlogon\Welcome", "Guy's Kingdom", "REG_SZ"
In the actual script I control "HKLM\SOFTWARE\Microsoft\...." with the variable strWinlogon
Another minor point is that because the key is so long, that I need an underscore _ and an ampersand & so that WScript sees my code as one complete line. Instructions
- Copy and paste the script below into notepad.
- Save the file with .vbs extension e.g. Welcome.vbs
- Double click and then check the message box
- You may like to run Regedit and navigate from the HKLM to the winlogon section
-
Export the Registry before you make any changes
' Welcome.vbs ' Example VBScript to write to the registry. ' Author Guy Thomas http://computerperformance.co.uk ' Version 1.3 - February 20th 2005 ' ----------------------------------------' '
Option Explicit Dim objShell Dim strMessage, strWelcome, strWinLogon
' Set the string values strWelcome = "Welcome" ' New Key strMessage = "You are entering Guy's kingdom" strWinLogon
= "HKLM\SOFTWARE\Microsoft\" _ & "Windows NT\currentVersion\Winlogon\"
' Create the Shell object Set objShell = CreateObject("WScript.Shell")
' These are the two crucial command in this
script. objShell.RegWrite strWinLogon & strWelcome, 1, "REG_SZ" objShell.RegWrite strWinLogon & strWelcome, strMessage, "REG_SZ"
' I like a confirmation message Wscript.Echo "Press Ctrl, Alt Del
read top of Menu = " & strMessage
' The line below was purely for testing ' objShell.RegDelete strWinlogon & strWelcome WScript.Quit
' End of script.
Learning Points
Note 1: Here is what creates the Welcome key: objShell.RegWrite strWinLogon & strWelcome, 1, "REG_SZ".
Note 2: I found the commas a little tricky. One comma after the registry key (strWinLogon & strWelcome,) and another after the value (1,).
Note 3: At first my script failed because I omitted to put speech marks around the "REG_SZ".
Note 3: The use of variables, strWinLogon, strWelcome and strMessage.
Note 5: This script uses Microsoft\Windows NT\ section of the registry not the Microsoft\Windows\ folder.
Note 6: Regedit is the utility for understanding and troubleshooting this script. In particular Regedit can ensure that you have the correct spelling, once you locate the registry key, then go to File
(Menu), Export. Now you are all set to copy what ever is in the Selected Branch dialog box. Naturally, you paste this registry string into your script.
Challenges
I have commented out a line which uses .RegDelete so that you can see how to remove entries from the registry. However, I say again - be careful. Make sure that you do not delete the whole of
Winlogon. Incidentally, if you do remove the ' comment, then run the script, you will see your strMessage, but when you dismiss the WScript.Echo message box, the script will continue executing and
delete the strWelcome.
Ideally I would like to add more exciting, but potentially dangerous settings to the registry. If you feel that you have mastered this .RegWrite method, then I am sure that you could research other
keys to add to your registry.
If you need to regularly add new keys and values to the registry, then VBscript is a great solution. The key is to practice on innocuous settings just to master the .RegWrite methods and syntax.
Make sure you export the registry before you undertake major projects with .RegWrite.
Their topics and material are ideal for getting you started with VBScript. The
videos are easy to follow and you can control the pace. Try their free demo material and then see if you want to buy the full package.
See more about VB Script Training CD.
|