Computing.Net > Forums > Programming > using a vbs script to add reg value

using a vbs script to add reg value

Reply to Message Icon

Original Message
Name: ccook13
Date: June 6, 2007 at 13:02:10 Pacific
Subject: using a vbs script to add reg value
OS: Windows 2000 & XP
CPU/Ram: Pentium
Model/Manufacturer: Dell
Comment:

1. I am using group policy to add registry entries to prevent the auto update of Sun Java Runtime Environment. I need to add registry entries at both startup and login.

2. Since I have pretty limited knowledge of scripting I started by modifying another login script which I know to work.

3. After a lot of hacking around I ended up with the following code (placed after my comments)

4. The code seems to do everything I ask EXCEPT that I cannot get the script to merge the REG file into the registry on the remote PC.

5. Since the REG file includes a long binary value I am limited as to my choices for editing the registry. It does not look like the RegWrite method works for long binary values. I suppose I could try to call a CMD or BAT file and have that file do the registry edit, but this is already a complicated install and I'd like to avoid another step.

6. The error message I get on the remote PC is "Registry Editor: Cannot import c:\DisableJavaUpdateHKCU.reg: Error opening the file. There may be a disk or file system error.

Here's the code (sorry its long - I've flagged the line where I think the problem occurs):


Option Explicit

Dim oShell : set oShell = WScript.CreateObject("WScript.Shell")
Dim oFS : set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Dim checkFileExists : checkFileExists = "c:\java161checkfile.txt"

REM On error resume next

****************************************

if (GetTheOS() = "W2K") then

' IF the check file does not exist then run the following steps
If(NOT oFS.FileExists(checkFileExists)) Then

Dim DoesKeyExist
DoesKeyExist = "HKCU\Software\JavaSoft\Java Update\Policy"
If RegKeyExists(DoesKeyExist) then
oShell.RegDelete ("HKCU\Software\JavaSoft\Java Update\Policy\")
Else
'do nothing
End if

oFS.CopyFile "\\ds2\Network Services\Java\Scripts\DisableJavaUpdateHKCU.reg", "c:\DisableJavaUpdateHKCU.reg"
Dim java2K : java2K = "regedit c:\DisableJavaUpdateHKCU.reg"
I THINK THE PROBLEM IS THE NEXT LINE
oShell.Run (java2K)
oFS.DeleteFile "c:\DisableJavaUpdateHKCU.reg"

writeCheckFile()
End if

End if

'******************** END MAIN

Function GetTheOS()
' Will work with most versions of WSH (windows shell)
CONST FORREADING = 1
Dim sResults, fFile
Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Dim sTemp : sTemp = WshShell.ExpandEnvironmentStrings("%TEMP%")
Dim sTempFile : sTempFile = "c:\runresult.tmp"
WshShell.Run "%comspec% /c ver >" & sTempFile, 0, True

Set fFile = FSO.OpenTextFile(sTempFile, FORREADING)
sResults = fFile.ReadAll
fFile.Close
Fso.DeleteFile(sTempFile)

Select Case True
Case InStr(sResults, "Windows NT") > 1 : GetTheOS = "NT4"
Case InStr(sResults, "Windows 2000") > 1 : GetTheOS = "W2K"
Case InStr(sResults, "Windows XP") > 1 : GetTheOS = "WXP"
Case Else : GetTheOS = "Unknown"
End Select
End Function

'function for writing the checkfile
Function writeCheckFile()
Dim checkFile
Set checkFile = oFS.CreateTextFile("c:\java161checkfile.txt", True)
checkFile.WriteLine("This file is used by the script JavaInstall.vbs")
checkFile.WriteBlankLines(1)
checkFile.WriteLine("If it is the first time the script runs it will write")
checkFile.WriteLine("this file to c:\java161checkfile.txt.")
checkFile.WriteBlankLines(1)
checkFile.WriteLine("If this file exists the next time the script will skip")
checkFile.WriteLine("the running of the Java install and associated registry edits.")
End Function

' Returns True or False based on the existence of a registry key.
' This part is a compliment from Torgeir Bakken.

Function RegKeyExists(ByVal sRegKey)
Dim sDescription

RegKeyExists = True
sRegKey = Trim (sRegKey)
If Not Right(sRegKey, 1) = "\" Then
sRegKey = sRegKey & "\"
End If

On Error Resume Next
oShell.RegRead "HKEYNotAKey\"
sDescription = Replace(Err.Description, "HKEYNotAKey\", "")

Err.Clear
oShell.RegRead sRegKey
RegKeyExists = sDescription <> Replace(Err.Description, sRegKey, "")
On Error Goto 0
End Function

'*********** CLEAN UP *******************

Set oFS = Nothing
Set oShell = Nothing

WScript.Quit (0)

'********** END CODE ****************


Any suggestions???? Anything more you need to know to answer the questions?

Thanks for your help!

Cliff


Report Offensive Message For Removal


Response Number 1
Name: tonysathre
Date: June 6, 2007 at 15:27:08 Pacific
Reply: (edit)

Import Reg with VBScript

"Computer security." — Oxymoron


Report Offensive Follow Up For Removal

Response Number 2
Name: Razor2.3
Date: June 6, 2007 at 23:07:43 Pacific
Reply: (edit)

6. The error message I get on the remote PC is "Registry Editor: Cannot import c:\DisableJavaUpdateHKCU.reg: Error opening the file. There may be a disk or file system error.

Well there's your problem. Either give every user write/create/delete privileges to every remote's c:\, or redirect the command to a file share. As in:
oShell.Run "regedit /s "\\ds2\Network Services\Java\Scripts\DisableJavaUpdateHKCU.reg"

I didn't even look at the code, does anyone think that that'll be a problem?...


Report Offensive Follow Up For Removal







Use following form to reply to current message:

   Name: From My Computing.Net Settings
 E-Mail: From My Computing.Net Settings

Subject: using a vbs script to add reg value

Comments:

 


  Homepage URL (*): 
Homepage Title (*): 
         Image URL: 
 
Data Recovery Software




Have you ever used OpenOffice?

Yes, as my main suite.
Yes, occationally.
Yes, but only once.
No, never.


View Results

Poll Finishes Today.
Discuss in The Lounge