Solved

Problems checking date for registry key using vbs

Posted on 2009-04-15
2
174 Views
Last Modified: 2012-05-06
Hello. I am trying to get the below script to check the date. If the date is less than one day old, it will display my message box and quit. If the date is older than 1 day, it will display another message box I have.

I assume my problem is in the way I am checking the date. I am modifying an existing script that I have.

The date is in the format of 4/15/2009 - 16:08:04. I am not concerned about the time. I only want it to check the date. Currently, the script always displays the installing message box.

Any help would be appreciated.
DateCheck
 

Function DateCheck
 

Dim objShell

Dim strComputer

Dim objRegistry

Dim strKeyPath

Dim strValueName

Dim strValue

Dim intReturn

Dim arrDateBits

Dim dteDate
 
 
 

Set objShell = CreateObject("WScript.Shell")

Const HKLM = &H80000002

strComputer = "."

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

strKeyPath = """SOFTWARE\Packages\FTC\FTC Base Package"""

strValueName = "InstallDate"

intReturn = objRegistry.GetStringValue(HKLM, strKeyPath, strValueName, strValue)

If intReturn = 0 Then

	If InStr(strValue, "-") > 0 Then

		arrDateBits = Split(strValue, "/")

		If UBound(arrDateBits) = 2 Then

			dteDate = CDate(arrDateBits(0) & "/" & MonthName(arrDateBits(1), True) & "/" & arrDateBits(2))

			If dteDate < DateAdd("d", -1, Now) Then

			MsgBox "Exit"

			WScript.Quit

			End If

		Else

		End If

	Else

	End If

Else

MsgBox "Installing"

End If
 

Set objShell = Nothing

Set objRegistry = Nothing
 

End Function

Open in new window

0
Comment
Question by:Lorrec
2 Comments
 
LVL 10

Accepted Solution

by:
TakedaT earned 500 total points
Comment Utility
Try this code.  I think that all the extra quotes around the reg path in line 21 caused your getstring to return an error.

Since you are not worried about the time, I had the time stipped off of arrDateBits(2) in line 29.  I entered a date just as you specified and it works for me.

If you want the time included, it shouldnt be to difficult.
DateCheck

 

Function DateCheck

 

Dim objShell

Dim strComputer

Dim objRegistry

Dim strKeyPath

Dim strValueName

Dim strValue

Dim intReturn

Dim arrDateBits

Dim dteDate

 

 

 

Set objShell = CreateObject("WScript.Shell")

Const HKLM = &H80000002

strComputer = "."

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

strKeyPath = "SOFTWARE\Packages\FTC\FTC Base Package"

strValueName = "InstallDate"

intReturn = objRegistry.GetStringValue(HKLM, strKeyPath, strValueName, strValue)
 

If intReturn = 0 Then

	If InStr(strValue, "-") > 0 Then

		arrDateBits = Split(strValue, "/")

		If UBound(arrDateBits) = 2 Then

			dteDate = CDate(arrDateBits(0) & "/" & arrDateBits(1) & "/" & left(arrDateBits(2),4))

			If dteDate < DateAdd("d", -1, Now) Then

				MsgBox "Older than a day Exit"

				WScript.Quit

			Else

				MsgBox "Newer than a day Exit"

				Wscript.Quit

			End If

		Else

		End If

	Else

	End If

Else

	MsgBox "Installing"

End If

 

Set objShell = Nothing

Set objRegistry = Nothing

 

End Function

Open in new window

0
 

Author Closing Comment

by:Lorrec
Comment Utility
This is great. Thank you for the help.
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Script to copy or move mouse-selected collection of files plus targets referenced by shortcuts (.lnk) The purpose of this article is to help illuminate the real challenges and options available (where they may exist) for utilizing simple scriptin…
In this article we want to have a look at the directory attributes which are used by Microsoft to store the so called Security Identifiers (SID). These SIDs plays an important role in delegating and granting permissions and in authentication of trus…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now