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

check for registry entry then run VBS

I want to create an .exe file that, on install creates a registry entry and adds an icon to the desktop.  When the user clicks on the icon it runs a VBS file that checks to see if that entry is there before running another VBS file.  
0
Dier02
Asked:
Dier02
  • 2
3 Solutions
 
si_shamilCommented:
Try this function:

'==================================================================================
 
' Function Name : regKeyExists(pHive, byVal pKey)
 
' Return value  : Boolean (True or False)
 
' Author        : Alex Simenduev, http://www.planetit.ws
' Date          : 16/07/2008
 
' Description   : Check if specified registry key in specified HIVE exists
 
'==================================================================================
 
Function regKeyExists(pHive, byVal pKey) : regKeyExists = False
 
	Dim objReg, strSubkey, arrSubkeys, strKey, arrSplit, intReturn
 
	Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
 
	
 
	' Remove ending backslash (\) if exists
 
	If Right(pKey, 1) = "\" Then
 
		pKey = Left(pKey, Len(pkey) - 1)
 
	End If
 
	
 
	arrSplit = Split(pkey, "\")
 
	strKey = arrSplit(Ubound(arrSplit))
 
	pKey = Left(pKey, Len(pkey) - Len(strKey) - 1)
 
	
 
	intReturn = objReg.EnumKey(pHive, pKey, arrSubkeys)
 
	If intReturn <> 0 Then Exit Function
 
	If Not isArray(arrSubkeys) Then Exit Function
 
	
 
	For Each strSubkey in arrSubkeys
 
		If UCase(strSubkey) = UCase(strKey) Then 
 
			regKeyExists = True
 
			Exit Function
 
		End If
 
	Next
 
End Function

Open in new window

0
 
si_shamilCommented:
Ups, the snippet has added an extra lines, ignore it, use this:

'==================================================================================
' Function Name    : regKeyExists(pHive, byVal pKey)
' Return value    : Boolean (True or False)
' Author            : Alex Simenduev, Oasis Capital Management
' Date            : 16/07/2008
' Description        : Check if specified registry key in specified HIVE exists
'==================================================================================
Function regKeyExists(pHive, byVal pKey) : regKeyExists = False
    Dim objReg, strSubkey, arrSubkeys, strKey, arrSplit, intReturn
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
     
    ' Remove ending backslash (\) if exists
    If Right(pKey, 1) = "\" Then
        pKey = Left(pKey, Len(pkey) - 1)
    End If
     
    arrSplit = Split(pkey, "\")
    strKey = arrSplit(Ubound(arrSplit))
    pKey = Left(pKey, Len(pkey) - Len(strKey) - 1)
     
    intReturn = objReg.EnumKey(pHive, pKey, arrSubkeys)
    If intReturn <> 0 Then Exit Function
    If Not isArray(arrSubkeys) Then Exit Function
     
    For Each strSubkey in arrSubkeys
        If UCase(strSubkey) = UCase(strKey) Then  
            regKeyExists = True
            Exit Function
        End If
    Next
End Function
0
 
Dier02Author Commented:
I want to create an .exe file that, on install creates a registry entry and adds an icon to the desktop.
0
 
PakaCommented:
To do these, you will need a VBS packager (such as PrimalScript).  PrimalScript will let you package your vbs as an EXE.  PrimalScript has a 30 evaluation program that will let you develop the EXE you need.

To work with the registry in VBS use this link:
http://www.activexperts.com/activmonitor/windowsmanagement/scripts/operatingsystem/registry/

How to create a desktop shortcut:
http://www.computerperformance.co.uk/ezine/ezine119.htm



0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

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

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