Hack 9 Add, Remove, or Retrieve Environment Variables

 < Day Day Up > 

Hack 9 Add, Remove, or Retrieve Environment Variables

figs/moderate.gif figs/hack09.gif

Environment variables can easily be added, removed, or retrieved using the script in this hack .

Using VBScript to work with the Windows system environment can be pretty simple. This hack shows how to use a script to read variables, add new variables, remove variables, and recurse through all of them. Just take a look through the script and read the comments to see how to perform each task. Note that there are four types of values in the Windows Script Host (WSH) environmentSystem, User, Volatile, and Processand the script uses all of them.

By the way, this script is provided by Dudeworks (http://www.dudeworks.net). For additional resources on Windows scripting and working with the environment, see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsProEnvironment.asp.

The Code

Type the following script into Notepad (with Word Wrap disabled) and save it with a .vbs extension as GetEnvVars.vbs :

 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  'Created by: Rob Olson - Dudeworks  'Created on: 10/17/2001  'Purpose: Get Environment Variables.  '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ wscript.echo "Working with the Environment: Provided by www.dudeworks.net"&vbcrlf&vbcrlf&strval  '// Create an instance of the wshShell object set WshShell = CreateObject("WScript.Shell") 'Use the methods of the object wscript.echo "Environment.item: "& WshShell.Environment.item("WINDIR") wscript.echo "ExpandEnvironmentStrings: "& WshShell.ExpandEnvironmentStrings("%windir%") '// add and remove environment variables '// Specify the environment type ( System, User, Volatile, or Process ) set oEnv=WshShell.Environment("System") wscript.echo "Adding ( TestVar=Windows Script Host ) to the System " _ & "type environment" ' add a var oEnv("TestVar") = "Windows Script Host" wscript.echo "removing ( TestVar=Windows Script Host ) from the System " _ & "type environment" ' remove a var oEnv.Remove "TestVar" '// List all vars in all environment types '//System Type set oEnv=WshShell.Environment("System") for each sitem in oEnv  strval=strval & sItem &vbcrlf  next wscript.echo "System Environment:"&vbcrlf&vbcrlf&strval  strval="" '//Process Type set oEnv=WshShell.Environment("Process") for each sitem in oEnv  strval=strval & sItem &vbcrlf  next wscript.echo "Process Environment:"&vbcrlf&vbcrlf&strval  strval="" '//User Type set oEnv=WshShell.Environment("User") for each sitem in oEnv  strval=strval & sItem &vbcrlf  next wscript.echo "User Environment:"&vbcrlf&vbcrlf&strval  strval="" '//Volatile Type set oEnv=WshShell.Environment("Volatile") for each sitem in oEnv  strval=strval & sItem &vbcrlf  next wscript.echo "Volatile Environment:"&vbcrlf&vbcrlf&strval  strval="" 

Running the Hack

To run the script, open a command prompt, change to the directory where the script is saved, and type cscript.exe GetEnvVars.vbs . Here is an example of typical output from the script on a Windows 2000 machine:

 Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. Working with the Environment: Provided by www.dudeworks.net Environment.item: %SystemRoot% ExpandEnvironmentStrings: C:\WINNT Adding ( TestVar=Windows Script Host ) to the System type environment removing ( TestVar=Windows Script Host ) from the System type environment System Environment: ComSpec=%SystemRoot%\system32\cmd.exe Os2LibPath=%SystemRoot%\system32\os2\dll; Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem windir=%SystemRoot% OS=Windows_NT PROCESSOR_ARCHITECTURE=x86 PROCESSOR_LEVEL=6 PROCESSOR_IDENTIFIER=x86 Family 6 Model 5 Stepping 2, GenuineIntel PROCESSOR_REVISION=0502 NUMBER_OF_PROCESSORS=1 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH TEMP=%SystemRoot%\TEMP TMP=%SystemRoot%\TEMP Process Environment: =C:=C:\ =ExitCode=00000000 ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Administrator\Application Data CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=SNOOPY ComSpec=C:\WINNT\system32\cmd.exe HOMEDRIVE=C: HOMEPATH=\Documents and Settings\Administrator LOGONSERVER=\SNOOPY NUMBER_OF_PROCESSORS=1 OS=Windows_NT Os2LibPath=C:\WINNT\system32\os2\dll; Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 5 Stepping 2, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0502 ProgramFiles=C:\Program Files PROMPT=$P$G SystemDrive=C: SystemRoot=C:\WINNT TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp USERDOMAIN=SNOOPY USERNAME=Administrator USERPROFILE=C:\Documents and Settings\Administrator windir=C:\WINNT User Environment: TEMP=%USERPROFILE%\Local Settings\Temp TMP=%USERPROFILE%\Local Settings\Temp Volatile Environment: LOGONSERVER=\SNOOPY APPDATA=C:\Documents and Settings\Administrator\Application Data 

By the way, if you add a new variable via the command prompt, you will not see it when you try to read it via the script. You can read only the new values created via the same scripting type you used to create them. Although I've tested this only to a limited extent, it seems to be true. Try it for yourself; just open a command prompt, type Set DUDE=Dudeworks , and press Enter to set the new environment variable. Now, when you execute GetEnvVars.vbs , and you'll notice that it does not list that new variable. However, if you type SET at the command prompt, you will see it.

Rob Olson

 < Day Day Up > 


Windows Server Hacks
Windows Server Hacks
ISBN: 0596006470
EAN: 2147483647
Year: 2004
Pages: 163
Authors: Mitch Tulloch

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net