Well, I hadn't tried it that way prior to your mentioning it, so I did. Initially it did not work, but I got to thinking about it and was able to run it manually from the command line with no path to the log file since I was in the "working directory". So I modified my code to point to the working directory prior to $cmdln execution and it works like a champ without having to specify the log path. It never crossed my mind to do it that way as all the the uninstall strings you find in the registry specify a log file path. Thanks for all your help.

By the way I've entered the SETOPTION('NoVarsInStrings','on') in my code as you stressed, but can you tell me what that accomlishes? When I look up SETOPTION in the kixtart help, the NoVarsInString option is not even mentioned. Anyway, here is my code that finally works in case anyone else experiences this problem:

SETOPTION('NoVarsInStrings','on')
$BProg = ICQLite
$Bat = "%SystemDrive%\unwise.bat"
$SWRegKey = ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\$BProg.exe")
$SWProgKey = KeyExist("$SWRegKey")

IF $SWProgKey = 1 ;Banned software is installed on this machine
? "Banned software $BProg has been found on computer @Wksta!"
$ProgStr = ReadValue("$SWRegKey", "Path")
? "Removing banned software $BProg from computer @Wksta....."
CD "$ProgStr"
@ERROR
$cmdln = '"'+$ProgStr+'\unwise32.exe" /A '+$BProg+'.log'
? '$cmdln'
SHELL "$cmdln"
ENDIF

Return