home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / Registry_E1917277252005.psc / frmTest.frm < prev    next >
Text File  |  2005-07-25  |  31KB  |  907 lines

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  3. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
  4. Begin VB.Form frmTest 
  5.    BorderStyle     =   1  'Fixed Single
  6.    Caption         =   "Key Snapshot"
  7.    ClientHeight    =   8895
  8.    ClientLeft      =   45
  9.    ClientTop       =   435
  10.    ClientWidth     =   8925
  11.    BeginProperty Font 
  12.       Name            =   "Verdana"
  13.       Size            =   8.25
  14.       Charset         =   0
  15.       Weight          =   400
  16.       Underline       =   0   'False
  17.       Italic          =   0   'False
  18.       Strikethrough   =   0   'False
  19.    EndProperty
  20.    LinkTopic       =   "Form1"
  21.    LockControls    =   -1  'True
  22.    MaxButton       =   0   'False
  23.    MinButton       =   0   'False
  24.    ScaleHeight     =   8895
  25.    ScaleWidth      =   8925
  26.    StartUpPosition =   1  'CenterOwner
  27.    Begin VB.Frame frmImage 
  28.       Caption         =   "Save and Restore"
  29.       BeginProperty Font 
  30.          Name            =   "Verdana"
  31.          Size            =   8.25
  32.          Charset         =   0
  33.          Weight          =   700
  34.          Underline       =   0   'False
  35.          Italic          =   0   'False
  36.          Strikethrough   =   0   'False
  37.       EndProperty
  38.       Height          =   855
  39.       Left            =   120
  40.       TabIndex        =   37
  41.       Top             =   7920
  42.       Width           =   8685
  43.       Begin VB.CommandButton cmdCreateRestore 
  44.          Caption         =   "Create"
  45.          BeginProperty Font 
  46.             Name            =   "Verdana"
  47.             Size            =   8.25
  48.             Charset         =   0
  49.             Weight          =   700
  50.             Underline       =   0   'False
  51.             Italic          =   0   'False
  52.             Strikethrough   =   0   'False
  53.          EndProperty
  54.          Height          =   405
  55.          Left            =   6180
  56.          TabIndex        =   41
  57.          Top             =   330
  58.          Width           =   1125
  59.       End
  60.       Begin VB.CommandButton cmdDeployRestore 
  61.          Caption         =   "Deploy"
  62.          BeginProperty Font 
  63.             Name            =   "Verdana"
  64.             Size            =   8.25
  65.             Charset         =   0
  66.             Weight          =   700
  67.             Underline       =   0   'False
  68.             Italic          =   0   'False
  69.             Strikethrough   =   0   'False
  70.          EndProperty
  71.          Height          =   405
  72.          Left            =   7380
  73.          TabIndex        =   40
  74.          Top             =   330
  75.          Width           =   1125
  76.       End
  77.       Begin VB.TextBox txtRestore 
  78.          Height          =   285
  79.          Left            =   150
  80.          TabIndex        =   39
  81.          Text            =   "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\Run"
  82.          Top             =   420
  83.          Width           =   5865
  84.       End
  85.       Begin VB.Label Label13 
  86.          AutoSize        =   -1  'True
  87.          Caption         =   "Create a Binary Image of a Key and Restore"
  88.          Height          =   195
  89.          Left            =   150
  90.          TabIndex        =   38
  91.          Top             =   240
  92.          Width           =   3855
  93.       End
  94.    End
  95.    Begin VB.Frame frmMonitor 
  96.       Caption         =   "Key Monitor"
  97.       BeginProperty Font 
  98.          Name            =   "Verdana"
  99.          Size            =   8.25
  100.          Charset         =   0
  101.          Weight          =   700
  102.          Underline       =   0   'False
  103.          Italic          =   0   'False
  104.          Strikethrough   =   0   'False
  105.       EndProperty
  106.       Height          =   1785
  107.       Left            =   120
  108.       TabIndex        =   24
  109.       Top             =   6090
  110.       Width           =   8685
  111.       Begin VB.CheckBox chkDifferential 
  112.          Caption         =   "Auto Calculate Poll Interval"
  113.          Height          =   225
  114.          Left            =   180
  115.          TabIndex        =   35
  116.          Top             =   1350
  117.          Width           =   2745
  118.       End
  119.       Begin VB.TextBox txtInterval 
  120.          Height          =   285
  121.          Left            =   1650
  122.          TabIndex        =   31
  123.          Text            =   "5"
  124.          Top             =   960
  125.          Width           =   405
  126.       End
  127.       Begin VB.TextBox txtMonitor 
  128.          Height          =   315
  129.          Left            =   150
  130.          TabIndex        =   27
  131.          Text            =   "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main"
  132.          Top             =   600
  133.          Width           =   8325
  134.       End
  135.       Begin VB.CommandButton cmdStopMonitor 
  136.          Caption         =   "Stop"
  137.          BeginProperty Font 
  138.             Name            =   "Verdana"
  139.             Size            =   8.25
  140.             Charset         =   0
  141.             Weight          =   700
  142.             Underline       =   0   'False
  143.             Italic          =   0   'False
  144.             Strikethrough   =   0   'False
  145.          EndProperty
  146.          Height          =   405
  147.          Left            =   7380
  148.          TabIndex        =   26
  149.          Top             =   1260
  150.          Width           =   1125
  151.       End
  152.       Begin VB.CommandButton cmdStartMonitor 
  153.          Caption         =   "Start"
  154.          BeginProperty Font 
  155.             Name            =   "Verdana"
  156.             Size            =   8.25
  157.             Charset         =   0
  158.             Weight          =   700
  159.             Underline       =   0   'False
  160.             Italic          =   0   'False
  161.             Strikethrough   =   0   'False
  162.          EndProperty
  163.          Height          =   405
  164.          Left            =   6180
  165.          TabIndex        =   25
  166.          Top             =   1260
  167.          Width           =   1125
  168.       End
  169.       Begin VB.Label Label12 
  170.          AutoSize        =   -1  'True
  171.          Caption         =   "Seconds"
  172.          Height          =   195
  173.          Left            =   2100
  174.          TabIndex        =   33
  175.          Top             =   1020
  176.          Width           =   720
  177.       End
  178.       Begin VB.Label Label11 
  179.          AutoSize        =   -1  'True
  180.          Caption         =   "Polling Interval:"
  181.          Height          =   195
  182.          Left            =   180
  183.          TabIndex        =   32
  184.          Top             =   1020
  185.          Width           =   1365
  186.       End
  187.       Begin VB.Label lblMonitor 
  188.          AutoSize        =   -1  'True
  189.          Caption         =   "Monitor Values Changed in this SubKey"
  190.          Height          =   195
  191.          Left            =   150
  192.          TabIndex        =   28
  193.          Top             =   420
  194.          Width           =   3375
  195.       End
  196.    End
  197.    Begin VB.Frame frmInstruct 
  198.       Caption         =   "Instructions"
  199.       BeginProperty Font 
  200.          Name            =   "Verdana"
  201.          Size            =   8.25
  202.          Charset         =   0
  203.          Weight          =   700
  204.          Underline       =   0   'False
  205.          Italic          =   0   'False
  206.          Strikethrough   =   0   'False
  207.       EndProperty
  208.       Height          =   5865
  209.       Left            =   120
  210.       TabIndex        =   12
  211.       Top             =   210
  212.       Width           =   2295
  213.       Begin VB.Label lblVote 
  214.          AutoSize        =   -1  'True
  215.          Caption         =   "Click to Vote"
  216.          BeginProperty Font 
  217.             Name            =   "Verdana"
  218.             Size            =   8.25
  219.             Charset         =   0
  220.             Weight          =   700
  221.             Underline       =   -1  'True
  222.             Italic          =   0   'False
  223.             Strikethrough   =   0   'False
  224.          EndProperty
  225.          ForeColor       =   &H00C00000&
  226.          Height          =   195
  227.          Left            =   450
  228.          TabIndex        =   42
  229.          Top             =   5520
  230.          Width           =   1215
  231.       End
  232.       Begin VB.Label Label10 
  233.          AutoSize        =   -1  'True
  234.          Caption         =   "Monitor/Restore"
  235.          BeginProperty Font 
  236.             Name            =   "Verdana"
  237.             Size            =   8.25
  238.             Charset         =   0
  239.             Weight          =   700
  240.             Underline       =   0   'False
  241.             Italic          =   0   'False
  242.             Strikethrough   =   0   'False
  243.          EndProperty
  244.          Height          =   195
  245.          Left            =   90
  246.          TabIndex        =   30
  247.          Top             =   3630
  248.          Width           =   1605
  249.       End
  250.       Begin VB.Label Label9 
  251.          Caption         =   $"frmTest.frx":0000
  252.          Height          =   1575
  253.          Left            =   90
  254.          TabIndex        =   29
  255.          Top             =   3840
  256.          Width           =   1935
  257.       End
  258.       Begin VB.Label Label6 
  259.          Caption         =   "Start the Compare Routine, it should identify all the keys you have added, (and quickly!)"
  260.          Height          =   1065
  261.          Left            =   90
  262.          TabIndex        =   18
  263.          Top             =   2580
  264.          Width           =   1935
  265.       End
  266.       Begin VB.Label Label5 
  267.          AutoSize        =   -1  'True
  268.          Caption         =   "Step 3"
  269.          BeginProperty Font 
  270.             Name            =   "Verdana"
  271.             Size            =   8.25
  272.             Charset         =   0
  273.             Weight          =   700
  274.             Underline       =   0   'False
  275.             Italic          =   0   'False
  276.             Strikethrough   =   0   'False
  277.          EndProperty
  278.          Height          =   195
  279.          Left            =   90
  280.          TabIndex        =   17
  281.          Top             =   2370
  282.          Width           =   615
  283.       End
  284.       Begin VB.Label Label4 
  285.          Caption         =   "Add several arbitrary keys to the selected registry branch using regedit, bury them as deep as you like.."
  286.          Height          =   1035
  287.          Left            =   90
  288.          TabIndex        =   16
  289.          Top             =   1350
  290.          Width           =   1935
  291.       End
  292.       Begin VB.Label Label3 
  293.          AutoSize        =   -1  'True
  294.          Caption         =   "Step 2"
  295.          BeginProperty Font 
  296.             Name            =   "Verdana"
  297.             Size            =   8.25
  298.             Charset         =   0
  299.             Weight          =   700
  300.             Underline       =   0   'False
  301.             Italic          =   0   'False
  302.             Strikethrough   =   0   'False
  303.          EndProperty
  304.          Height          =   195
  305.          Left            =   90
  306.          TabIndex        =   15
  307.          Top             =   1140
  308.          Width           =   615
  309.       End
  310.       Begin VB.Label Label2 
  311.          Caption         =   "Select the test branch, and create the Base Snapshot."
  312.          Height          =   675
  313.          Left            =   90
  314.          TabIndex        =   14
  315.          Top             =   510
  316.          Width           =   1935
  317.       End
  318.       Begin VB.Label Label1 
  319.          AutoSize        =   -1  'True
  320.          Caption         =   "Step 1"
  321.          BeginProperty Font 
  322.             Name            =   "Verdana"
  323.             Size            =   8.25
  324.             Charset         =   0
  325.             Weight          =   700
  326.             Underline       =   0   'False
  327.             Italic          =   0   'False
  328.             Strikethrough   =   0   'False
  329.          EndProperty
  330.          Height          =   195
  331.          Left            =   90
  332.          TabIndex        =   13
  333.          Top             =   300
  334.          Width           =   615
  335.       End
  336.    End
  337.    Begin VB.Frame fmData 
  338.       Caption         =   "Data"
  339.       BeginProperty Font 
  340.          Name            =   "Verdana"
  341.          Size            =   8.25
  342.          Charset         =   0
  343.          Weight          =   700
  344.          Underline       =   0   'False
  345.          Italic          =   0   'False
  346.          Strikethrough   =   0   'False
  347.       EndProperty
  348.       Height          =   3075
  349.       Left            =   2580
  350.       TabIndex        =   1
  351.       Top             =   210
  352.       Width           =   6225
  353.       Begin MSComctlLib.ListView lstOutput 
  354.          Height          =   2475
  355.          Left            =   120
  356.          TabIndex        =   5
  357.          Top             =   270
  358.          Width           =   5985
  359.          _ExtentX        =   10557
  360.          _ExtentY        =   4366
  361.          View            =   3
  362.          LabelWrap       =   -1  'True
  363.          HideSelection   =   -1  'True
  364.          _Version        =   393217
  365.          ForeColor       =   -2147483640
  366.          BackColor       =   -2147483643
  367.          BorderStyle     =   1
  368.          Appearance      =   1
  369.          NumItems        =   1
  370.          BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  371.             Text            =   "Key"
  372.             Object.Width           =   10585
  373.          EndProperty
  374.       End
  375.       Begin VB.Label lblOperation 
  376.          AutoSize        =   -1  'True
  377.          Caption         =   "Current Operation: Idle.."
  378.          Height          =   195
  379.          Left            =   180
  380.          TabIndex        =   4
  381.          Top             =   2790
  382.          Width           =   2145
  383.       End
  384.    End
  385.    Begin VB.Frame fmControls 
  386.       Caption         =   "Enumeration Controls"
  387.       BeginProperty Font 
  388.          Name            =   "Verdana"
  389.          Size            =   8.25
  390.          Charset         =   0
  391.          Weight          =   700
  392.          Underline       =   0   'False
  393.          Italic          =   0   'False
  394.          Strikethrough   =   0   'False
  395.       EndProperty
  396.       Height          =   2715
  397.       Left            =   2580
  398.       TabIndex        =   0
  399.       Top             =   3360
  400.       Width           =   6225
  401.       Begin VB.CheckBox ChkAutoTolerance 
  402.          Caption         =   "Auto Calculate Ideal Tolerance"
  403.          Height          =   225
  404.          Left            =   2100
  405.          TabIndex        =   36
  406.          Top             =   1530
  407.          Width           =   3045
  408.       End
  409.       Begin VB.CheckBox chkValues 
  410.          Caption         =   "Enumerate Sub Key Values"
  411.          Height          =   225
  412.          Left            =   180
  413.          TabIndex        =   34
  414.          Top             =   2340
  415.          Width           =   2745
  416.       End
  417.       Begin VB.CheckBox chkSubkey 
  418.          Caption         =   "Search SubKey"
  419.          Height          =   225
  420.          Left            =   1380
  421.          TabIndex        =   22
  422.          Top             =   930
  423.          Value           =   1  'Checked
  424.          Width           =   1665
  425.       End
  426.       Begin VB.TextBox txtTolerance 
  427.          Height          =   285
  428.          Left            =   1380
  429.          TabIndex        =   21
  430.          Text            =   "10"
  431.          Top             =   1470
  432.          Width           =   495
  433.       End
  434.       Begin VB.TextBox txtSubkey 
  435.          Height          =   255
  436.          Left            =   1380
  437.          TabIndex        =   20
  438.          Text            =   "SOFTWARE\Microsoft\Windows\CurrentVersion"
  439.          Top             =   600
  440.          Width           =   4665
  441.       End
  442.       Begin VB.CheckBox chkSaveResults 
  443.          Caption         =   "Save Results to File"
  444.          Height          =   255
  445.          Left            =   180
  446.          TabIndex        =   11
  447.          Top             =   2040
  448.          Width           =   2085
  449.       End
  450.       Begin VB.OptionButton Option1 
  451.          Caption         =   "HKCC"
  452.          Height          =   225
  453.          Index           =   4
  454.          Left            =   150
  455.          TabIndex        =   10
  456.          Top             =   1740
  457.          Width           =   885
  458.       End
  459.       Begin VB.OptionButton Option1 
  460.          Caption         =   "HKU"
  461.          Height          =   225
  462.          Index           =   3
  463.          Left            =   150
  464.          TabIndex        =   9
  465.          Top             =   1470
  466.          Width           =   765
  467.       End
  468.       Begin VB.OptionButton Option1 
  469.          Caption         =   "HKLM"
  470.          Height          =   225
  471.          Index           =   2
  472.          Left            =   150
  473.          TabIndex        =   8
  474.          Top             =   1170
  475.          Value           =   -1  'True
  476.          Width           =   855
  477.       End
  478.       Begin VB.OptionButton Option1 
  479.          Caption         =   "HKCU"
  480.          Height          =   225
  481.          Index           =   1
  482.          Left            =   150
  483.          TabIndex        =   7
  484.          Top             =   870
  485.          Width           =   915
  486.       End
  487.       Begin VB.OptionButton Option1 
  488.          Caption         =   "HKCR"
  489.          Height          =   225
  490.          Index           =   0
  491.          Left            =   150
  492.          TabIndex        =   6
  493.          Top             =   570
  494.          Width           =   885
  495.       End
  496.       Begin VB.CommandButton cmdSnapshot 
  497.          Caption         =   "Snap Shot"
  498.          BeginProperty Font 
  499.             Name            =   "Verdana"
  500.             Size            =   8.25
  501.             Charset         =   0
  502.             Weight          =   700
  503.             Underline       =   0   'False
  504.             Italic          =   0   'False
  505.             Strikethrough   =   0   'False
  506.          EndProperty
  507.          Height          =   405
  508.          Left            =   3720
  509.          TabIndex        =   3
  510.          Top             =   2190
  511.          Width           =   1125
  512.       End
  513.       Begin VB.CommandButton cmdCompare 
  514.          Caption         =   "Compare"
  515.          BeginProperty Font 
  516.             Name            =   "Verdana"
  517.             Size            =   8.25
  518.             Charset         =   0
  519.             Weight          =   700
  520.             Underline       =   0   'False
  521.             Italic          =   0   'False
  522.             Strikethrough   =   0   'False
  523.          EndProperty
  524.          Height          =   405
  525.          Left            =   4920
  526.          TabIndex        =   2
  527.          Top             =   2190
  528.          Width           =   1125
  529.       End
  530.       Begin VB.Label Label8 
  531.          AutoSize        =   -1  'True
  532.          Caption         =   "Set Search Tolerance (min 10)"
  533.          Height          =   195
  534.          Left            =   1380
  535.          TabIndex        =   23
  536.          Top             =   1260
  537.          Width           =   2640
  538.       End
  539.       Begin VB.Label Label7 
  540.          Caption         =   "Select a Test Branch:"
  541.          BeginProperty Font 
  542.             Name            =   "Verdana"
  543.             Size            =   8.25
  544.             Charset         =   0
  545.             Weight          =   700
  546.             Underline       =   0   'False
  547.             Italic          =   0   'False
  548.             Strikethrough   =   0   'False
  549.          EndProperty
  550.          Height          =   225
  551.          Left            =   150
  552.          TabIndex        =   19
  553.          Top             =   300
  554.          Width           =   2145
  555.       End
  556.    End
  557.    Begin MSComDlg.CommonDialog cDialog 
  558.       Left            =   0
  559.       Top             =   0
  560.       _ExtentX        =   847
  561.       _ExtentY        =   847
  562.       _Version        =   393216
  563.    End
  564. End
  565. Attribute VB_Name = "frmTest"
  566. Attribute VB_GlobalNameSpace = False
  567. Attribute VB_Creatable = False
  568. Attribute VB_PredeclaredId = True
  569. Attribute VB_Exposed = False
  570.  
  571. 'The goal of this program is to detect relatively small changes
  572. 'to a file or database. The search routine has a tolerance factor
  573. 'that could be incremented if searching for a larger number of
  574. 'changes. I have used the registry for this example, but the
  575. 'comparison routine could be applied to any two similar ordered files.
  576.  
  577. Option Explicit
  578.  
  579. Private lHKey  As Long
  580. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, _
  581.                                                                                ByVal lpOperation As String, _
  582.                                                                                ByVal lpFile As String, _
  583.                                                                                ByVal lpParameters As String, _
  584.                                                                                ByVal lpDirectory As String, _
  585.                                                                                ByVal nShowCmd As Long) As Long
  586.  
  587.  
  588. Private Sub chkValues_Click()
  589.  
  590.     cValues = CBool(chkValues.Value)
  591.     If cValues Then
  592.         txtTolerance.Text = "100"
  593.         With lstOutput
  594.             .ListItems.Clear
  595.             .AllowColumnReorder = True
  596.             .ColumnHeaders.Clear
  597.             .ColumnHeaders.Add , , "Key and Values", 5915
  598.         End With
  599.     Else
  600.         txtTolerance.Text = "10"
  601.         With lstOutput
  602.             .ListItems.Clear
  603.             .AllowColumnReorder = True
  604.             .ColumnHeaders.Clear
  605.             .ColumnHeaders.Add 1, , "Key", 5915
  606.         End With
  607.     End If
  608.  
  609. End Sub
  610.  
  611. Private Sub cmdCompare_Click()
  612.  
  613. Dim sPath    As String
  614. Dim sData    As String
  615. Dim l        As Long
  616. Dim Item     As ListItem
  617. Dim lRes     As Long
  618. Dim sSubText As String
  619. Dim sSubKey  As String
  620.  
  621.     If chkSubkey Then                               '//check for subkey
  622.         sSubKey = txtSubkey.Text                    '//subkey string
  623.         If Not InStrB(txtSubkey.Text, "\") Then     '//extract for filename check from solidus
  624.             sSubText = Mid$(txtSubkey.Text, InStrRev(txtSubkey.Text, "\") + 1)
  625.         Else
  626.             sSubText = txtSubkey.Text               '//if there is no solidus
  627.         End If
  628.     End If
  629.  
  630.     If chkValues Then                               '//check for val enum option
  631.         sSubText = sSubText & "Val"
  632.     End If
  633.  
  634.     Select Case True                                '//select key and name the path
  635.     Case Option1(0)
  636.         lHKey = HKEY_CLASSES_ROOT
  637.         sPath = App.Path & "\hkcrsnap" & sSubText & ".txt"
  638.     Case Option1(1)
  639.         lHKey = HKEY_CURRENT_USER
  640.         sPath = App.Path & "\hkcusnap" & sSubText & ".txt"
  641.     Case Option1(2)
  642.         lHKey = HKEY_LOCAL_MACHINE
  643.         sPath = App.Path & "\hklmsnap" & sSubText & ".txt"
  644.     Case Option1(3)
  645.         lHKey = HKEY_USERS
  646.         sPath = App.Path & "\hkusnap" & sSubText & ".txt"
  647.     Case Option1(4)
  648.         lHKey = HKEY_CURRENT_CONFIG
  649.         sPath = App.Path & "\hkccsnap" & sSubText & ".txt"
  650.     End Select
  651.  
  652.     If Not FileExists(sPath) Then                   '//check for base file
  653.         lblOperation.Caption = "Comparison Aborted.."
  654.         MsgBox "Please take a Snapshot of this Key First!", vbExclamation, "No SnapShot!"
  655.         Exit Sub
  656.     Else
  657.         lblOperation.Caption = "Preparing Comparison Snapshot.."
  658.         Open sPath For Binary As #1                 '//load base file
  659.         sData = Input$(LOF(1), 1)
  660.         Close #1
  661.     End If
  662.  
  663.     If Not txtTolerance.Text = vbNullString Then    '//get tolerance num
  664.         lRes = CLng(txtTolerance.Text)
  665.     Else
  666.         lRes = 10
  667.     End If
  668.  
  669.     bDimn = False                                   '//reset aKeyArr
  670.     GetKeyInfo lHKey, sSubKey                       '//get the key array
  671.     Reset_Dimensions
  672.  
  673.     aBase = Split(sData, vbNewLine)                 '//assign base and compare
  674.     ReDim aComp(0 To 0)
  675.     If Not cValues Then
  676.         aComp() = aKeyArr()
  677.     Else
  678.         aComp() = aValArr()
  679.     End If
  680.  
  681.     lblOperation.Caption = "Comparing Images.."
  682.  
  683.     If ChkAutoTolerance Then                        '//call to tolerance calc
  684.         lRes = Auto_Set_Tolerance
  685.         txtTolerance.Text = lRes
  686.     End If
  687.  
  688.     Dyn_Compare aBase(), aComp(), lRes              '//send to comparison engine
  689.  
  690.     lstOutput.ListItems.Clear
  691.  
  692.     For l = 0 To UBound(aDiff)
  693.         Set Item = lstOutput.ListItems.Add(, , aDiff(l))    '//user notify
  694.     Next l
  695.  
  696.     lblOperation.Caption = "Scan Complete, Saving Diff File.."
  697.     If chkSaveResults Then
  698.         Open App.Path & "\snapout.txt" For Append As #1     '//save results
  699.         For l = 0 To UBound(aDiff)
  700.             Print #1, aDiff(l)
  701.         Next l
  702.         Close #1
  703.     End If
  704.  
  705.     lblOperation.Caption = "Comparison Complete!"
  706.  
  707. End Sub
  708.  
  709. Private Sub cmdCreateRestore_Click()
  710.  
  711. Dim sHkey As String
  712. Dim lHKey As Long
  713. Dim sKey  As String
  714. Dim sName As String
  715.  
  716.     sName = txtRestore.Text
  717.     If Not Len(txtRestore.Text) = 0 Then
  718.         sHkey = Left$(txtRestore.Text, InStr(txtRestore.Text, "\") - 1)
  719.         Select Case sHkey
  720.         Case "HKEY_CLASSES_ROOT"
  721.             lHKey = HKEY_CLASSES_ROOT
  722.         Case "HKEY_CURRENT_USER"
  723.             lHKey = HKEY_CURRENT_USER
  724.         Case "HKEY_LOCAL_MACHINE"
  725.             lHKey = HKEY_LOCAL_MACHINE
  726.         Case "HKEY_USERS"
  727.             lHKey = HKEY_USERS
  728.         Case "HKEY_CURRENT_CONFIG"
  729.             lHKey = HKEY_CURRENT_CONFIG
  730.         Case Else
  731.             MsgBox "Invalid Root Key!" & vbNewLine & _
  732.        "Ex. HKEY_CURRENT_USER\AppEvents", vbExclamation, "Invalid Key!"
  733.             Exit Sub
  734.         End Select
  735.  
  736.         sKey = Mid$(txtRestore.Text, InStr(txtRestore.Text, "\") + 1)
  737.     Else
  738.         MsgBox "Please specify a fully qualified Key!" & vbNewLine & _
  739.        "No Key Specified!", vbExclamation, "Backup Aborted!"
  740.         Exit Sub
  741.     End If
  742.  
  743.     If Not Save_Key(sKey, lHKey, sName) Then        '//notify on status
  744.         MsgBox "Key Backup has Failed!" & vbNewLine & _
  745.        "Please Check the Key Path!", vbExclamation, "Backup Failed!"
  746.     Else
  747.         MsgBox "Backup of Key Successful!!" & vbNewLine & _
  748.        "The Key has been saved in the Recovery Folder!", vbExclamation, "Backup Success!"
  749.     End If
  750.  
  751. End Sub
  752.  
  753. Private Sub cmdDeployRestore_Click()
  754.  
  755.     With cDialog
  756.         .DialogTitle = "Please select a recovery file"
  757.         .Filter = "Registry Restore (*.kbs)|*.kbs"
  758.         .ShowOpen
  759.         .InitDir = App.Path & "Recovery\"
  760.         txtRestore.Text = .FileName
  761.     End With
  762.  
  763.     If Not Deploy_Key(txtRestore.Text) Then
  764.         MsgBox "Key Restore has Failed!" & vbNewLine & _
  765.        "Please Check the Key Path!", vbExclamation, "Backup Failed!"
  766.     Else
  767.         MsgBox "Key Restore Successful!!" & vbNewLine & _
  768.        "The Key has been Restored to its original state!", vbExclamation, "Backup Success!"
  769.     End If
  770.  
  771. End Sub
  772.  
  773. Private Sub cmdSnapshot_Click()
  774.  
  775. Dim l        As Long
  776. Dim sPath    As String
  777. Dim sSubText As String
  778. Dim sSubKey  As String
  779.  
  780.     If chkSubkey Then
  781.         sSubKey = txtSubkey.Text
  782.         If Not InStrB(txtSubkey.Text, "\") Then
  783.             sSubText = Mid$(txtSubkey.Text, InStrRev(txtSubkey.Text, "\") + 1)
  784.         Else
  785.             sSubText = txtSubkey.Text
  786.         End If
  787.     End If
  788.  
  789.     If chkValues Then
  790.         sSubText = sSubText & "Val"
  791.         cValues = True
  792.     End If
  793.  
  794.     Select Case True
  795.     Case Option1(0)
  796.         lHKey = HKEY_CLASSES_ROOT
  797.         sPath = App.Path & "\hkcrsnap" & sSubText & ".txt"
  798.     Case Option1(1)
  799.         lHKey = HKEY_CURRENT_USER
  800.         sPath = App.Path & "\hkcusnap" & sSubText & ".txt"
  801.     Case Option1(2)
  802.         lHKey = HKEY_LOCAL_MACHINE
  803.         sPath = App.Path & "\hklmsnap" & sSubText & ".txt"
  804.     Case Option1(3)
  805.         lHKey = HKEY_USERS
  806.         sPath = App.Path & "\hkusnap" & sSubText & ".txt"
  807.     Case Option1(4)
  808.         lHKey = HKEY_CURRENT_CONFIG
  809.         sPath = App.Path & "\hkccsnap" & sSubText & ".txt"
  810.     End Select
  811.  
  812.     lblOperation.Caption = "Creating Snap Shot.."
  813.     bDimn = False
  814.     GetKeyInfo lHKey, sSubKey                       '//build the base array
  815.     Reset_Dimensions
  816.  
  817.     If Not cValues Then
  818.         Open sPath For Output As #1                 '//send to file
  819.         For l = 0 To UBound(aKeyArr)
  820.             Print #1, aKeyArr(l)
  821.             lblOperation.Caption = "Printing: " & l
  822.             DoEvents
  823.         Next l
  824.         Close #1
  825.     Else
  826.         Open sPath For Output As #1
  827.         For l = 0 To UBound(aValArr)
  828.             Print #1, aValArr(l)
  829.             lblOperation.Caption = "Printing: " & l
  830.             DoEvents
  831.         Next l
  832.         Close #1
  833.     End If
  834.  
  835.     lblOperation.Caption = "Snapshot Complete.."
  836.  
  837. End Sub
  838.  
  839. Private Sub cmdStartMonitor_Click()
  840.  
  841. Dim sHkey As String
  842. Dim lHKey As Long
  843. Dim sKey  As String
  844. Dim mStr  As String
  845. Dim mName As String
  846.  
  847.     If Not txtMonitor.Text = vbNullString Then
  848.         sHkey = Left$(txtMonitor.Text, InStr(txtMonitor.Text, "\") - 1)
  849.         Select Case sHkey
  850.         Case "HKEY_CLASSES_ROOT"
  851.             lHKey = HKEY_CLASSES_ROOT
  852.         Case "HKEY_CURRENT_USER"
  853.             lHKey = HKEY_CURRENT_USER
  854.         Case "HKEY_LOCAL_MACHINE"
  855.             lHKey = HKEY_LOCAL_MACHINE
  856.         Case "HKEY_USERS"
  857.             lHKey = HKEY_USERS
  858.         Case "HKEY_CURRENT_CONFIG"
  859.             lHKey = HKEY_CURRENT_CONFIG
  860.         Case Else
  861.             MsgBox "Invalid Root Key!" & vbNewLine & _
  862.        "Ex. HKEY_CURRENT_USER\AppEvents", vbExclamation, "Invalid Key!"
  863.             Exit Sub
  864.         End Select
  865.  
  866.         sKey = Mid$(txtMonitor.Text, InStr(txtMonitor.Text, "\") + 1)
  867.         If sKey = vbNullString Then
  868.             MsgBox "No Sub Key Specified!" & vbNewLine & _
  869.        "Ex. HKEY_CURRENT_USER\AppEvents", vbExclamation, "No Sub Key!"
  870.             Exit Sub
  871.         End If
  872.     Else
  873.         MsgBox "Please specify a Branch and Subkey!" & vbNewLine & _
  874.        "Ex. HKEY_CURRENT_USER\AppEvents", vbExclamation, "No Key!"
  875.         Exit Sub
  876.     End If
  877.     mName = Mid$(txtMonitor.Text, InStrRev(txtMonitor.Text, "\") + 1)
  878.     mStr = Return_Values(lHKey, sKey)
  879.     Start_Monitor mStr, mName, lHKey, sKey
  880.  
  881. End Sub
  882.  
  883. Private Sub cmdStopMonitor_Click()
  884.  
  885.         '//stop and reset variables
  886.     bMonitor = False
  887.     sModmstr = vbNullString
  888.     sModmname = vbNullString
  889.     lModlhkey = 0
  890.     sModskey = vbNullString
  891.     sModApp = vbNullString
  892.  
  893. End Sub
  894.  
  895. Private Sub lblVote_Click()
  896.  
  897.     ShellExecute Me.hWnd, "open", "http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=61832&lngWId=1", "", "", 1
  898.  
  899. End Sub
  900.  
  901. Private Sub Option1_Click(Index As Integer)
  902.  
  903.     txtSubkey.Text = vbNullString                   '//user proofing
  904.     chkSubkey.Value = 0
  905.  
  906. End Sub
  907.