Solved

Problems checking date for registry key using vbs

Posted on 2009-04-15
2
175 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
ID: 24151206
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
ID: 31570556
This is great. Thank you for the help.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Welcome back!  My apologies for taking so long to write part two of this series; it's been a long time coming!  As I promised in Part 1, this article will focus on how to locate those elusive AD properties that you are searching for.  Why is this us…
Over the years I have built up my own little library of code snippets that I refer to when programming or writing a script.  Many of these have come from the web or adaptations from snippets I find on the Web.  Periodically I add to them when I come…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

895 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

16 Experts available now in Live!

Get 1:1 Help Now