• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 70
  • Last Modified:

Novice question on VBScript

Hello folks,

I'm working on a writing a VBScript and I have no experience with VBS.  I can do this with a command line with no problem, however, it needs to be in VBS.

The script I'm working on checks to see if 2 registry key exist, and if so, deletes a third key.  I've been looking around on the net and found some code that works for what I want to do.  My issue is on the delete RegKey code.  I found this code which works fine, however, if I modify it to point to a different location, it doesn't work.

Here is the code I found and if I put a key in the registry, it deletes it just fine:  HKCU\Software\Test

Const HKEY_CURRENT_USER = &H80000001 

strComputer = "."
strKeyPath = "Software\Test" 

Set objRegistry = GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv") 

DeleteSubkeys HKEY_CURRENT_USER, strKeypath 

Sub DeleteSubkeys(HKEY_CURRENT_USER, strKeyPath) 
    objRegistry.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubkeys 

    If IsArray(arrSubkeys) Then 
        For Each strSubkey In arrSubkeys 
            DeleteSubkeys HKEY_CURRENT_USER, strKeyPath & "\" & strSubkey 
        Next 
    End If 

    objRegistry.DeleteKey HKEY_CURRENT_USER, strKeyPath 
End Sub

Open in new window


But if I change the code to this, it doesn't work.  What am I doing wrong?  HKLM\Software\Test

Const HKEY_LOCAL_MACHINE = &H80000002 

strComputer = "."
strKeyPath = "Software\Test" 

Set objRegistry = GetObject("winmgmts:\\" & 
    strComputer & "\root\default:StdRegProv") 

DeleteSubkeys HKEY_LOCAL_MACHINE, strKeypath 

Sub DeleteSubkeys(HKEY_LOCAL_MACHINE, strKeyPath) 
    objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys 

    If IsArray(arrSubkeys) Then 
        For Each strSubkey In arrSubkeys 
            DeleteSubkeys HKEY_LOCAL_MACHINE, strKeyPath & "\" & strSubkey 
        Next 
    End If 

    objRegistry.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath 
End Sub

Open in new window

0
Jody Phillips
Asked:
Jody Phillips
  • 3
  • 2
  • 2
  • +1
4 Solutions
 
CFB_SurfgoddessIT ManagerCommented:
You have a variable strKeyPath, but I do not see that variable assigned.  Don't know if that is the problem, but I would look at that.  Also are you using anything like notepad++ to write this?
What line is the error on...?  You can put on error resume which may make it work.
0
 
Jody PhillipsIT SpecialistAuthor Commented:
I'm using MetaPad and verified that it's a DOS VBS file.  The only thing I changed is the first line:

Const HKEY_CURRENT_USER = &H80000001

to

Const HKEY_LOCAL_MACHINE = &H80000002

and all instances of HKEY_CURRENT_USER to HKEY_LOCAL_MACHINE.  The first one works fine, but the second one doesn't.

Looks like I also have a typo in the second script.  In line 6 I forgot the underscore, but it's there in the script I have.
0
 
aikimarkCommented:
I forgot the underscore
that's why you should always include an Option Explicit statement
1
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
JesterTooCommented:
HKCU keys are for the current user and are readable/writable by the current user.  However, HKLM keys are shared by all users and are read-only by all users.  In order to modify an HKLM key you need to run the script with elevated permissions (aka as administrator).
1
 
Jody PhillipsIT SpecialistAuthor Commented:
OK, so I've tried to use this to elevate the permissions, but it's STILL not working.  My script name is Axcess-regkey.VBS and it's in the same directory.

Set objShell = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
strPath = FSO.GetParentFolderName (WScript.ScriptFullName)
     objShell.ShellExecute "wscript.exe", _ 
        Chr(34) & strPath & "\Axcess-regkey.VBS" & Chr(34), "", "runas", 1

Open in new window

0
 
aikimarkCommented:
it's STILL not working
What error message do you get?
0
 
JesterTooCommented:
Jody,
Your exact code (with the correction you mentioned above) works perfectly for me.
0
 
Jody PhillipsIT SpecialistAuthor Commented:
Not sure what I was doing wrong, but it seems to be working now.  Thanks for the help folks.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now