Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 478
  • Last Modified:

How to find if a Reg key exists

I'm trying to create a script that will the registry (HKLM\Software\Microsoft\Updates\Windows Server 2003\SP3\ "keynamevar").   If the key exists then create a report text file.  I've created the following, but when I test it does not report true findings!  Thank you for your help

strComputer = "."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const HKEY_LOCAL_MACHINE = &H80000002

dt = Replace(Date,"/","-")
strFileName = "C:\versions\" & dt & "-FreeSpace.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile2 = objFSO.CreateTextFile(strFileName, ForAppending, True)
Set objFile = objFSO.OpenTextFile("C:\versions\patches.txt", 1)

' Registry values
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")
'objFile2.WriteLine "Date Modified: " & dt
Do Until objFile.AtEndOfStream
    strCharacters = objFile.Readline
    strKeyPath = "SOFTWARE\Microsoft\Updates\Windows Server 2003\SP3\"& strCharacters
    strValueName = "InstalledDate"
    oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath, _
        strValueName,strValue
  'If IsNull(strValueName) Then
   if strValueName = "InstalledDate" Then
      objFile2.WriteLine   "Date Installed: " & strValue
         oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath, _
         strValueName1,strValue1
           strValueName1 = "Description"
         objFile2.WriteLine  "Patch Installed:  " & strValue1
        
  Else
      objFile2.WriteLine  "Key (" & strCharacters & ") does not exist!!"  & strValue1      

  End If
Loop
objFile.Close
objFile2.Close
0
Lou Pereira
Asked:
Lou Pereira
1 Solution
 
chandru_solCommented:
Try this..........

regards
Chandru
Option Explicit
Dim blnResult
 
blnResult = CheckIfRegKeyExist()
If blnResult Then WScript.Echo "True" Else WScript.Echo "False"
 
Function CheckIfRegKeyExist()
   Const HKEY_LOCAL_MACHINE = &H80000002
   Dim objRegistry
   Dim arrSubKeys
   Dim strStartKey
   Dim varResult
   
   ' Set a default value of strStartKey as example.
   ' User can type any other key.
   strStartKey = "SOFTWARE\Microsoft\"
   strStartKey = InputBox("Which key in HKLM do you want to enumerate?","Registry Key Enumeration", strStartKey)
   ' Connect to the registry.
   Set objRegistry = GetObject("winmgmts:root\default:stdregprov")
 
   If objRegistry.EnumKey(HKEY_LOCAL_MACHINE, strStartKey, arrSubKeys) = 0 Then
      CheckIfRegKeyExist = True
   Else
      CheckIfRegKeyExist = False
   End If
   Set objRegistry = Nothing
End Function

Open in new window

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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

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