;region Set Code Options
;Set Break to On if not in Logon Mode.
If Not @LogonMode
Break On
EndIf
;Set Code Options to On
Dim $SO
$SO=SetOption("NoMacrosInStrings", "ON")
$SO=SetOption("NoVarsInStrings", "ON")
$SO=SetOption("Explicit", "ON")
;endregion Set Code Options
;region Setup Varibles
;Dim variables in order of creation.
Global $System,$MainForm
Dim $nul,$ImageList,$MainMenu,$FileMenuItem,$ExitMenuItem,$MainPanel
Dim $DeletePanel,$DeleteListView,$DeleteListViewColumn0,$DeleteListViewColumn1,$DeleteLabel
Dim $Splitter
Dim $ActivePanel,$ActiveListView,$ActiveListViewColumn0,$ActiveListViewColumn1,$ActiveComboBox
Dim $ControlPanel,$ControlButton,$Controls,$Control,$ImageIndex
;Create an array of names of the 'Control Stack'.
$Controls = "Exit","Delete","Refresh","Restore","Backup","Save"
;Create 'Kixforms.System' Object.
$System = CreateObject("Kixforms.System")
;Verify the 'Kixforms.System' Object was created if not, notify and exit.
If Not $System
$nul= MessageBox("KiXforms.Net Not Initiated."+@CRLF+
"Please verify KiXforms.Net is installed."+@CRLF+
"This Script Will Now Close.","Error",16)
Quit()
EndIf
;Create an 'ImageList' for the 'Control Stack'.
$ImageList = $System.ImageList()
$ImageList.ImageSize = $System.Size(16,16)
$nul = $ImageList.Images.AddStrip(ControlImages())
;endregion Setup Varibles
;region Main Form
;Create Form and Controls.
;Store the original 'MainForm.Size' in 'MainForm.Tag' for easy retrieval in the 'MainForm.SizeChanged' event function.
$MainForm = $System.Form()
$MainForm.Font = $System.Font("Verdana",8.25,0) ;Regular
$MainForm.Icon = $System.Icon.FromBitmap(FormIcon())
$MainForm.StartPosition = $System.FormStartPosition_CenterScreen
$MainForm.Size = $System.Size(600,400) ;(Width,Height)
$MainForm.SizeChanged = "OnFormSizeChange()"
$MainForm.Text = "Windows Registry Run [Project 01 - Lession 03]"
$MainForm.Tag = $System.Size(600,400) ;(Width,Height)
;Create the MainMenu.
$MainMenu = $System.MainMenu()
$FileMenuItem = $MainMenu.MenuItems.Add($System.MenuItem("File"))
$ExitMenuItem = $FileMenuItem.MenuItems.Add($System.MenuItem("Exit"))
$ExitMenuItem.Click = "ExitForm()"
$MainForm.Menu = $MainMenu
;region Form Controls
;Most controls are attached to the MainPanel.
$MainPanel = $System.Panel()
$MainPanel.Dock = $System.DockStyle_Fill
$nul = $MainForm.Controls.Add($MainPanel)
;region Active Panel
;Create the upper Panel, it contains the controls above the spliter.
$ActivePanel = $System.Panel()
$ActivePanel.BorderStyle = $System.BorderStyle_Fixed3D
$ActivePanel.Dock = $System.DockStyle_Fill
$ActivePanel.Height = 160
$nul = $MainPanel.Controls.Add($ActivePanel)
;Create the upper ListView, to display the current registry entries.
;Set the '.Name' property to a descriptive name to allow ease of location later.
$ActiveListView = $System.ListView()
$ActiveListView.CheckBoxes = "True"
$ActiveListView.Dock = $System.DockStyle_Fill
$ActiveListView.FullRowSelect = "True"
$ActiveListView.GridLines = "True"
$ActiveListView.Name = "ActiveListView"
$ActiveListView.Sorting = $System.SortOrder_Ascending
$ActiveListView.View = $System.View_Details
$nul = $ActivePanel.Controls.Add($ActiveListView)
;Create the Columns for the upper ListView.
$ActiveListViewColumn0 = $ActiveListView.Columns.Add($System.ColumnHeader("Entry",100,$System.HorizontalAlignment_Left))
$ActiveListViewColumn1 = $ActiveListView.Columns.Add($System.ColumnHeader("Value",100,$System.HorizontalAlignment_Left))
;Create a ComboBox for the upper ListView to tell the user what registry key the user is viewing.
;Set the '.Name' property to a descriptive name to allow ease of location later.
$ActiveComboBox = $System.ComboBox()
$ActiveComboBox.Dock = $System.DockStyle_Top
$ActiveComboBox.Name = "ActiveComboBox"
$ActiveComboBox.SelectedIndexChanged = "MainForm_Refresh()"
$nul = $ActivePanel.Controls.Add($ActiveComboBox)
;endregion Active Panel
;Create a horizontal Splitter so the user can adjust the vertical size of the ListViews.
$Splitter = $System.Splitter()
$Splitter.BackColor = $System.Color.FromName("ActiveCaption")
$Splitter.Dock = $System.DockStyle_Bottom
$Splitter.Height = 3
$nul = $MainPanel.Controls.Add($Splitter)
;region Delete Panel
;Create the lower Panel, it contains the controls below the spliter.
$DeletePanel = $System.Panel()
$DeletePanel.BorderStyle = $System.BorderStyle_Fixed3D
$DeletePanel.Dock = $System.DockStyle_Bottom
$DeletePanel.Height = 150
$nul = $MainPanel.Controls.Add($DeletePanel)
;Create the lower ListView, to display the registry entries to be deleted.
;Set the '.Name' property to a descriptive name to allow ease of location later.
$DeleteListView = $System.ListView()
$DeleteListView.Dock = $System.DockStyle_Fill
$DeleteListView.FullRowSelect = "True"
$DeleteListView.GridLines = "True"
$DeleteListView.Name = "DeleteListView"
$DeleteListView.Sorting = $System.SortOrder_Ascending
$DeleteListView.View = $System.View_Details
$nul = $DeletePanel.Controls.Add($DeleteListView)
;Create the Columns for the lower ListView.
$DeleteListViewColumn0 = $DeleteListView.Columns.Add($System.ColumnHeader("Entry",100,$System.HorizontalAlignment_Left))
$DeleteListViewColumn1 = $DeleteListView.Columns.Add($System.ColumnHeader("Value",100,$System.HorizontalAlignment_Left))
;Create a Lable for the lower ListView to tell the user what the lower ListView is for.
$DeleteLabel = $System.Label()
$DeleteLabel.Dock = $System.DockStyle_Top
$DeleteLabel.Height = 20
$DeleteLabel.Text = "Entries to Delete"
$DeleteLabel.TextAlign = $System.ContentAlignment_MiddleCenter
$nul = $DeletePanel.Controls.Add($DeleteLabel)
;endregion Delete Panel
;region User Controls
;Create a Panel for the form user controls.
$ControlPanel = $System.Panel()
$ControlPanel.BorderStyle = $System.BorderStyle_Fixed3D
$ControlPanel.Dock = $System.DockStyle_Left
$ControlPanel.Width = 90
$nul = $MainForm.Controls.Add($ControlPanel)
;Create the user controls: Exit, Delete, Refresh, Restore, Backup, Save.
;Set the '.Name' property to a descriptive name to allow ease of location later.
;Set the '.Click' event to trigger the 'ControlClick(Control.Name)' function.
$ImageIndex = 0
For Each $Control in $Controls
$ControlButton = $System.Button()
$ControlButton.Click = "ControlClick('"+$Control+"')"
$ControlButton.Dock = $System.DockStyle_Top
$ControlButton.Height = 26
$ControlButton.ImageAlign = $System.ContentAlignment_TopLeft
$ControlButton.ImageList = $ImageList
$ControlButton.ImageIndex = $ImageIndex
$ControlButton.Name = $Control
$ControlButton.Text = $Control
$ControlButton.TextAlign = $System.ContentAlignment_MiddleRight
$nul = $ControlPanel.Controls.Add($ControlButton)
$ImageIndex = $ImageIndex + 1
Next
$ControlButton.Enabled = "False"
;endregion User Controls
;endregion Form Controls
;region Startup
PopulateActiveComboBox()
;endregion Startup
;Show the Form
$MainForm.Show
;Loop to catch form events.
While $MainForm.Visible
$nul = Execute($MainForm.DoEvents())
Loop
Exit 0
;endregion Main Form
;region Main Form Functions
;The 'OnFormSizeChange()' function adjusts the size of the form to the minimum size
;if the user tries to Set it too Small.
Function OnFormSizeChange()
Dim $MainForm_Size
;Retrieve the original 'MainForm.Size' from 'MainForm.Tag'
$MainForm_Size = $MainForm.Tag
If $MainForm.Width < $MainForm_Size.Width And Not($MainForm.WindowState = 1)
$MainForm.Width = $MainForm_Size.Width
EndIf
If $MainForm.Height < $MainForm_Size.Height And Not($MainForm.WindowState = 1)
$MainForm.Height = $MainForm_Size.Height
EndIf
EndFunction
;The 'PopulateActiveComboBox()' function adds items to the 'ActiveComboBox'.
Function PopulateActiveComboBox()
Dim $ActiveComboBox,$Item
;Find the 'ActiveComboBox' control.
$ActiveComboBox = $MainForm.FindControl("ActiveComboBox")
;Add items to the 'ActiveComboBox' control.
$Item = $ActiveComboBox.Items.Add("HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run")
$Item = $ActiveComboBox.Items.Add("HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run")
$ActiveComboBox.SelectedIndex = 0
EndFunction
;The 'MainForm_Refresh()' function is called when the
;'SelectedIndexChanged' event is triggered from the 'ActiveComboBox'.
;It clears the 'ActiveListView.Items', clears the 'DeleteListView.Items',
;populates the 'ActiveListView.Items' with the entries of the selected 'Run' key,
;disables the 'Save Button' and enables the 'Backup Button' and 'Restore Button'.
Function MainForm_Refresh()
Dim $ActiveComboBox,$ActiveListView,$DeleteListView,$SaveButton,$BackupButton,$RestoreButton,
$Entries,$Array,$Entry,$Value,$Item0,$Item1
;Find the 'ActiveComboBox' control.
$ActiveComboBox = $MainForm.FindControl("ActiveComboBox")
;Find the 'ActiveListView' control.
$ActiveListView = $MainForm.FindControl("ActiveListView")
;Find the 'DeleteListView' control.
$DeleteListView = $MainForm.FindControl("DeleteListView")
;Find the 'Save Button' user control.
$SaveButton = $MainForm.FindControl("Save")
;Find the 'Backup Button' user control.
$BackupButton = $MainForm.FindControl("Backup")
;Find the 'Restore Button' user control.
$RestoreButton = $MainForm.FindControl("Restore")
;Clear the 'ActiveListView.Items' collection.
$ActiveListView.Items.Clear
;Clear the 'DeleteListView.Items' collection.
$DeleteListView.Items.Clear
;Enumerate the registry entries selected in the 'ActiveComboBox.Text' property.
$Entries = GetKeyEntries($ActiveComboBox.Text)
;Loop thru each entry in the 'Entries' array and add them to the 'ListView'.
For Each $Array in $Entries
$Entry = Split($Array,"|")[0]
$Value = Split($Array,"|")[1]
$Item0 = $ActiveListView.Items.Add($System.ListViewItem($Entry))
$Item1 = $Item0.SubItems.Add($System.ListViewSubItem($Value))
Next
;Resize the 'ActiveListView' columns to the width of the largest 'ActiveListView.Items'
$ActiveListView.Columns.Item(0).Width = -1
If $ActiveListView.Columns.Item(0).Width < 100
$ActiveListView.Columns.Item(0).Width = 100
EndIf
$ActiveListView.Columns.Item(1).Width = -1
If $ActiveListView.Columns.Item(1).Width < 100
$ActiveListView.Columns.Item(1).Width = 100
EndIf
;Disable the 'Save Button' so the user can not save the selected changes.
$SaveButton.Enabled = "False"
;Enable the 'Backup Button' so the user can backup the selected 'Run' key.
$BackupButton.Enabled = "True"
;Enable the 'Restore Button' so the user can restore the selected 'Run' key.
$RestoreButton.Enabled = "True"
EndFunction
;The 'GetKeyEntries()' function enumerates the entries of a key passed to it,
;and passes those entries and their values back in an array.
Function GetKeyEntries($SubKey)
Dim $Index,$Array[0],$Entry,$Value,$Error
$Index = 0
$Entry = EnumValue($Subkey,$Index)
If @ERROR = 0
$Value = ReadValue($Subkey,$Entry)
$Array[$Index] = $Entry+"|"+$Value
While @ERROR = 0
$Index = $Index + 1
$Entry = EnumValue($Subkey,$Index)
$Value = ReadValue($Subkey,$Entry)
ReDim Preserve $Array[$Index]
$Array[$Index] = $Entry+"|"+$Value
Loop
ReDim Preserve $Array[$Index-1]
$GetKeyEntries = $Array
Else
$GetKeyEntries = ''
EndIf
EndFunction
;The 'ControlClick(Control.Name)' function defines the '.Click' event for each button in the 'Control Stack'.
Function ControlClick($ControlName)
Select
Case $ControlName = "Save"
SaveReg()
Case $ControlName = "Backup"
BackupReg()
Case $ControlName = "Restore"
RestoreReg()
Case $ControlName = "Refresh"
MainForm_Refresh()
Case $ControlName = "Delete"
DeleteReg()
Case $ControlName = "Exit"
ExitForm()
EndSelect
EndFunction
;The 'SaveReg()' function removes the entries (listed in the 'DeleteListView.Items') from the selected 'Run' key,
;then clears the 'ActiveListView.Items', clears the 'DeleteListView.Items' and refreshes the
;'ActiveListView.Items' in the selected 'Run' key.
Function SaveReg()
Dim $ActiveComboBox,$ActiveListView,$DeleteListView,$Item,$nul
;Find the 'ActiveComboBox' control.
$ActiveComboBox = $MainForm.FindControl("ActiveComboBox")
;Find the 'ActiveListView' control.
$ActiveListView = $MainForm.FindControl("ActiveListView")
;Find the 'DeleteListView' control.
$DeleteListView = $MainForm.FindControl("DeleteListView")
;Loop thru each item in 'DeleteListView.Items'
For Each $Item in $DeleteListView.Items
;Delete the selected 'Run' key entry (listed in the 'DeleteListView.Items').
$nul = DelValue($ActiveComboBox.Text,$Item.Text)
Next
;Clear the 'ActiveListView.Items', clear the 'DeleteListView.Items'
;and populate the 'ActiveListView.Items' with the entries of the selected 'Run' key.
MainForm_Refresh()
EndFunction
;The 'BackupReg()' function copies the registry entries form the selected 'Run' key to 'RunBackup' key.
Function BackupReg()
Dim $ActiveComboBox,$SelectedReg,$Entries,$Array,$Entry,$Value,$nul
;Find the 'ActiveComboBox' control.
$ActiveComboBox = $MainForm.FindControl("ActiveComboBox")
;Pull the 'Run' key off of the 'ActiveComboBox.Text' property value.
;HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run
;becomes:
;HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion
$SelectedReg = SubStr($ActiveComboBox.Text,1,Len($ActiveComboBox.Text)-4)
;Enumerate the registry entries selected in the 'ActiveComboBox.Text' property.
$Entries = GetKeyEntries($ActiveComboBox.Text)
;Loop thru each entry in the 'Entries' array and add them to the 'RunBackup' registry key.
For Each $Array in $Entries
$Entry = Split($Array,"|")[0]
$Value = Split($Array,"|")[1]
$nul = WriteValue($SelectedReg+"\RunBackup",$Entry,$Value,"REG_SZ")
Next
;Clear the 'ActiveListView.Items', clear the 'DeleteListView.Items'
;and populate the 'ActiveListView.Items' with the entries of the selected 'Run' key.
MainForm_Refresh()
;Set index 0 to '(value not set)'
$nul = DelValue($SelectedReg+"\RunBackup","")
EndFunction
;The 'RestoreReg()' function copies the registry entries form the selected 'RunBackup' key to 'Run' key.
Function RestoreReg()
Dim $ActiveComboBox,$SelectedReg,$Entries,$Array,$Entry,$Value,$nul
;Find the 'ActiveComboBox' control.
$ActiveComboBox = $MainForm.FindControl("ActiveComboBox")
;Pull the 'Run' key off of the 'ActiveComboBox.Text' property value.
;HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run
;becomes:
;HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion
$SelectedReg = SubStr($ActiveComboBox.Text,1,Len($ActiveComboBox.Text)-4)
;Enumerate the registry entries selected in the 'SelectedReg\RunBackup' varible.
$Entries = GetKeyEntries($SelectedReg+"\RunBackup")
;Loop thru each entry in the 'Entries' array and add them to the 'Run' registry key.
For Each $Array in $Entries
$Entry = Split($Array,"|")[0]
$Value = Split($Array,"|")[1]
$nul = WriteValue($SelectedReg+"\Run",$Entry,$Value,"REG_SZ")
Next
;Clear the 'ActiveListView.Items', clear the 'DeleteListView.Items'
;and populate the 'ActiveListView.Items' with the entries of the selected 'Run' key.
MainForm_Refresh()
;Set index 0 to '(value not set)'
$nul = DelValue($SelectedReg+"\Run","")
EndFunction
;The 'DeleteReg()' function moves the checked entries from the 'ActiveListView' to the 'DeleteListView'.
Function DeleteReg()
Dim $ActiveListView,$DeleteListView,$SaveButton,$BackupButton,$RestoreButton,$Item,$Item0,$Item1
;Find the 'ActiveListView' control.
$ActiveListView = $MainForm.FindControl("ActiveListView")
;Find the 'DeleteListView' control.
$DeleteListView = $MainForm.FindControl("DeleteListView")
;Find the 'Save Button' user control.
$SaveButton = $MainForm.FindControl("Save")
;Find the 'Backup Button' user control.
$BackupButton = $MainForm.FindControl("Backup")
;Find the 'Restore Button' user control.
$RestoreButton = $MainForm.FindControl("Restore")
;Find all 'ActiveListView.Items' that are checked, add them to the 'DeleteListView.Items',
;then remove the checked 'ActiveListView.Items'
For Each $Item in $ActiveListView.Items
If $Item.Checked = -1
$Item0 = $DeleteListView.Items.Add($System.ListViewItem($Item.Text))
$Item1 = $Item0.SubItems.Add($System.ListViewSubItem($Item.SubItems.Item(1).Text))
$Item.Remove
EndIf
Next
;Resize both 'ListView.Columns' and enable or disable user controls if 'Items' have been
;added to 'DeleteListView.Items'.
If $DeleteListView.Items.Count > 0
;Resize the 'ActiveListView' columns to the width of the largest 'ActiveListView.Items'
$ActiveListView.Columns.Item(0).Width = -1
If $ActiveListView.Columns.Item(0).Width < 100
$ActiveListView.Columns.Item(0).Width = 100
EndIf
$ActiveListView.Columns.Item(1).Width = -1
If $ActiveListView.Columns.Item(1).Width < 100
$ActiveListView.Columns.Item(1).Width = 100
EndIf
;Resize the 'DeleteListView' columns to the width of the largest 'DeleteListView.Items'
$DeleteListView.Columns.Item(0).Width = -1
If $DeleteListView.Columns.Item(0).Width < 100
$DeleteListView.Columns.Item(0).Width = 100
EndIf
$DeleteListView.Columns.Item(1).Width = -1
If $DeleteListView.Columns.Item(1).Width < 100
$DeleteListView.Columns.Item(1).Width = 100
EndIf
;Enable the 'Save Button' so the user can save the selected changes.
$SaveButton.Enabled = "True"
;Enable the 'Backup Button' so the user can not backup the selected 'Run' key.
$BackupButton.Enabled = "False"
;Enable the 'Restore Button' so the user can not restore the selected 'Run' key.
$RestoreButton.Enabled = "False"
EndIf
EndFunction
;The 'ExitForm()' function exits the form.
Function ExitForm()
Quit 0
EndFunction
;endregion Main Form Functions
;region Images
;The 'FormIcon()' function creates the icon for 'MainForm.Icon'.
Function FormIcon()
$FormIcon = "
Qk02BAAAAAAAADYAAAAoAAAAEAAAABAAAAABACAAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAA
AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP/////////////////////////////////////////////////AwMD/
wMDA/8DAwP///////////wAAAP8AAAD/////////////////////////////////wMDA/8DA
wP8AAAD/AAAA/wAAAP/AwMD///////////8AAAD/AAAA////////////////////////////
AAAA/wAAAP8AAAD/AAAA/wAA//8AAAD/wMDA////////////AAAA/wAAAP//////////////
/////////////wAAAP/AwMD//////wAAAP8AAAD/AAAA/////////////////wAAAP8AAAD/
//////////////////////////8AAAD/wMDA////////////wMDA/8DAwP/AwMD/////////
//8AAAD/AAAA////////////////////////////AAAA/8DAwP/AwMD/AAAA/wAAAP8AAAD/
wMDA////////////AAAA/wAAAP///////////////////////////wAAAP8AAAD/AAAA/wAA
AP8A/wD/AAAA/8DAwP///////////wAAAP8AAAD///////////////////////////8AAAD/
wMDA/8DAwP8AAAD/AAAA/wAAAP////////////////8AAAD//////8DAwP/AwMD/wMDA/8DA
wP8AAAD/AAAA/wAAAP/AwMD/////////////////////////////////AAAA//////8AAAD/
AAAA/wAAAP8AAAD/AAAA/wD///8AAAD/wMDA/////////////////////////////////wAA
AP//////AAAA/8DAwP///////////wAAAP8AAAD/AAAA////////////////////////////
//////////8AAAD//////wAAAP/AwMD/////////////////////////////////////////
////////////////////////AAAA/wAAAP8AAAD/AAAA/8DAwP8AAP//AAD//wAA//8AAP//
AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAP8AAAD///8A/wAAAP/AwMD/AAD//wAA
//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAD/AAAA/wAAAP8AAAD/
wMDA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w==
"
$FormIcon = $System.Bitmap.FromBase64String($FormIcon)
EndFunction
;The 'ControlImages()' function creates the images for the 'ImageList'.
Function ControlImages()
$ControlImages = "
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"
$ControlImages = $System.Bitmap.FromBase64String($ControlImages)
EndFunction
;endregion Images