Restorepointcreatorchangelog
Restorepointcreatorchangelog
1 Build 10 release,
the first public release of the program, specifically the update checking routine that was pulling down the
changelog even if there wasn't a new version to download.
There's a lot of changes going on in the Public Beta version right now and much of the code changes are
very deep in the program, I don't feel that these changes are ready for public release yet so I'm once again
holding back on releasing a 7.1 version. As soon as I feel confident that the changes are stable I will
release it. I need more testing so please, if you feel up to testing beta software... please join in.
There were several key-archiectural changes to the program that were done in the Public Beta branch that
aren't yet ready for release this time around, these changes have been held back in the dev branch for
more testing. I don't believe that these changes are ready for release yet so they are being held back.
· Updated the processUpdateXMLData() function to only get the value of the betaRCVersion XML node
if the remote build type isn't set to "release".
· Included code in the listview sorter code to specifically handle the restore point ID column value.
· Included code in the listview sorter code to specifically handle the application event log ID column
value.
· Fixed a potential crash that could occur during export of the old application event log data to the new
log file if something goes wrong in the actual export function. This was due to trying to get a lock on
the log file which already has a lock that was created elsewhere in the program.
· Replaced the code that assembles the crash data in the old event log code to use the function in the
Functions.eventLogFunctions namespace.
· Removed the special function that just adds to an existing logObject, it was only being used in one
place in the code.
As stated before, development of the program will be considerably slowed down. I don't have nearly the
same amount of time that I used to have to keep a heavy active development cycle like what I had before
with a 15 day release cycle.
· Optimized much of the code used to parse Boolean values from the Registry.
· Added EnableWindowsFormsHighDpiAutoResizing to the embedded app.config file.
· Fixed multiple parts of the program to be thread safe.
· Added better handling of Integer Strings to the List View Sorting code.
· Simplified the RegEx parser used to check for the existence of numerical Strings with commas in it.
· Cleaned up some code on the Update Notification window.
· Added a Debug Mode and Build notation to the crash data that's written to the application event log.
· Improved the operation of the Application Event Log search tool. This required a massive rewrite of the
Application Event Log tool in terms of how it holds data in memory.
· Improved code that's used to compare String values.
· Included additional code to handle user.config file access violations that could cause the program to
crash. Thanks goes out to Terry Lynch for reporting this issue to me.
· Improved the window width restraints of the Disk Space Usage tool and Update Notification windows.
· Merged in version 1.300 of the HTTPHelper class and a new version of the deleteAtReboot Class.
· Fixed the support.convertErrorCodeToHex() function in which there was a possibility that "0x" wasn't
prepended to the returned String.
· Optimized the code of the addExtendedCrashData() function along with adding support to handle
StackOverflowException.
· Replaced the Please Wait window with a Please Wait panel built into the window itself. This major
change to the program should go a long way in solving a lot of crash issues that people have been
having with the program once and for all.
· Fixed a grammar mistake on one of the dialog boxes.
· Fixed a bug in which the label that tells you how many restore points are on the system wasn't updated
after deleting selected restore points.
· Fixed a bug in the file download routine in which it was telling the user to check the Application Event
Log if an error occurs but the program wasn't logging anything to the Application Event Log for the
user to check.
· Removed an unnecessary thread declaration from the update checking routine.
· Changed the way that custom colors and column orders are saved by the program in the applications
settings data. It now uses a much simpler way of storing the data.
· Removed the code to handle Specialized String Collections from the settings import and export code
since it's no longer needed.
· Added a limit of 6 MBs of files to be attached to the Official Contact Form. This is so as to not overload
the mail server on my web server.
· Changed the memory dump file type that's created when the program crashes. Hopefully it doesn't
result in too big of a file.
· Greatly improved application startup times by properly setting the process priorities such as the CPU
and I/O priorities. Before these were set to below Normal when launching the program using the Task
Wrapper which caused the program to run slower than it should have been, especially at application
launch.
As stated before, development of the program will be considerably slowed down. I don't have nearly the
same amount of time that I used to have to keep a heavy active development cycle like what I had before
with a 15 day release cycle. This new release is the first new major release since June 17th, 2017; that's
almost two months ago.
· Added the ability to make the Please Wait window that appears when updating a System Modal
window.
· Removed a system restore setup check from the WMI.createRestorePoint() function that's used by the
program to create restore points. It was causing too many false positives which caused some users to
lose system restore points.
· Added the ability to save the location of the update notification window.
· Fixed an issue in which a label on the update notification window wasn't being placed right after a
window resize.
· Removed a system restore setup check from many parts of the program. It was causing too many false
positives which caused some users to lose system restore points.
· Fixed an issue in which the message box telling you that the reserved space is set properly and that
something else is wrong is obscured by the Please Wait window.
· Added application modal properties to the ERROR_SERVICE_DISABLED message box.
· Fixed an issue in which the handleLockedSettingsFile() function could be passed a
ConfigurationErrorsException object when the function was expecting an IOException object. This has
been fixed by changing the input parameter type to a general purpose Exception object type. Thanks
goes out to Jack Reynolds for reporting this issue to me.
· Fixed a potential bug in which the "-deleteoldrestorepoints" command line switch wasn't working
properly.
· Implemented a possible fix for an issue that's been eluding me for quite some time. Thanks goes out to
Charles Ray for getting me a full memory dump file at the time of the program crash, this was
extremely helpful in narrowing down where the bug may be in the code.
· Updated copyright line in the About box for the year 2018.
· Added copyright line for the task scheduler library to the About box.
· Updated embedded Microsoft.Win32.TaskScheduler library DLL to version 2.5.23.
· Added a reference a DLL that's needed by the new version of the task library.
· Moved a function from one part of the code to another, specifically the deleteAtUserLogonTask()
function.
· Added code to manage the list of file operations that occur at system reboot. Removed the MoveFileEx
API declaration since we no longer need it. The deleteAtReboot Class replaces the MoveFileEx API
declaration.
· Updated the uninstall info update code to indicate if the current build is a public beta or release
candidate. This wasn't specified in the past.
· Implemented additional checks to see if the Settings file is locked at application startup.
· Added additional Null Reference checks to the function that opens the Please Wait window.
· Added a message box if an IO.FileNotFoundException is thrown when attempting to load the list of
System Restore Points.
· Implemented some changes in the code that exports the settings to a file.
· Included some additional catches around the window focus commands.
· Updated the HTTPHelper to version 1.280 which includes better handling of DNS Resolution errors
and a couple of fixes for the RegEx that parses out the domain name from the URL.
· Added special handling of DNS Resolution errors.
· Changed the message box that appears if you don't answer Yes to the UAC elevation prompt to be a
system modal type message box.
· Added additional handling of IO.DirectoryNotFoundException's to the addExtendedCrashData()
function.
· Added a function to verify window locations to make sure that windows never get lost by having a
negative X or Y value.
· Fixed a bug in which many of the windows saved the location but never loaded it back.
· Updated the Fody package from version 1.28.3 to 1.29.4 which is used at compile time.
· Added missing references to make Visual Studio 2017 happy.
· Moved many of the PInvoke methods to a new special class called NativeMethods. This is another
thing that I had to do to make Visual Studio 2017 happy.
· Fixed declaration of the SendMessage API.
· Fixed declaration of the QueryFullProcessImageName and SearchPath APIs to close possible security
hole, this was due to using the incorrect variable/object type in the function declaration.
· Removed a bunch of unnecessary Dispose() calls.
· Brought back the 'Enable "My Computer" Right-Click Option' on Windows 10. This is because I was
able to develop a workaround for an issue that was preventing me from doing this in the past.
· Developed a workaround for an issue in which I could not add any options to the My Computer right-
click context menu on Windows 10. This workaround includes writing to the CLSID root of the current
user's registry hive instead of writing to the HKEY_CLASSES_ROOT hive which is forbidden starting
with Windows 10.
· Added code to the update XML file parser to simplify the data needed in the XML file, specifically the
"betaRCVersion" node.
· Moved some code around internal to the program.
· Added the ability to ignore a version at update time. If you ignore a version it will ignore it when ever
the program checks for an update and notate it in the application log that it was ignored.
· Updated the HTTPHelper to version 1.266. This includes multiple fixes, improvements, and additions
to the class library that handles all of the program's various HTTP requests.
· Included a new settings backup file type that's based upon XML.
· Renamed "Reboot System" to "Reboot Computer" in the Utilities menu.
· Added a Manual System Restore Fix tool to the Utilities menu.
· Added a message box to the restore point creation routine telling the user what to do if the program
determined that doing an auto-fix to System Restore could have unintended side-effects.
· Included code in the downloadAndDoTheUpdate() function to detect if the user is on the beta update
channel and if the update channel has been overridden to stable channel. If this occurs then the debug
build is downloaded instead of the standard release (non-debug) build. This situation that could occur if
updating from a beta/RC build to the next release build but there's no new beta/RC build after it, this is
to make sure that if you are on the beta channel you get a debug build instead.
· Added an Advanced Mode for the Manage System Restore Storage Space tool. This has been added
back due to a user's request.
· Included renaming of multiple internal variable names.
· Added a custom exception to handle certain types of errors in the program, specifically when trying to
parse Strings into Integers.
· Fixed a possible bug in which a crash could occur if there are duplicate system restore point IDs when
selecting restore points to be deleted. This is strange because it really shouldn't be happening, this fix
should fix the issue. Thanks goes out to "George" and "Harry" (you know who you are) for reporting
this issue to me.
· Added handling of the custom exception to the extended exception data logging function.
· Added error logging for errors while parsing system restore point ID strings into Integers.
· Fixed an issue in the update routine in which the Please Wait window obscures the message box telling
you that a system reboot is needed to complete the update if something went wrong during the update
procedure. This issue was fixed by closing the Please Wait window before showing the message box.
· Fixed an issue in which the uninstall info's DisplayIcon wasn't being set properly which resulted in a
blank/broken icon in Windows Programs and Features.
· Minor code cleanups.
There will be no new release on March 15th, I will be far too busy during the first half of March to deal
with the program's code. I will however make every effort to make time for any support requests. The
Public Beta window will start again after March 15th.
· Fixed an issue on the main form when loading that could cause the program to lock up due to the Please
Wait window being tied to the main thread of the main form.
· Fixed a false positive in the program when there are no restore points on the system in which the
program asks to repair System Restore even though it doesn't need to be done. Thanks goes out to
Charles Ray for reporting this issue to me.
· Added additional logging to the application update procedure to catch possible errors.
· Fixed the wording on the Update Notification text at the top when the update is a standard update but
the text indicated that it was a Public Beta, this is wrong. This has been corrected.
· Implemented a whole new exported log file type. The new file type is based upon XML instead of a
custom-formatted file type. The new file type is reslogx.
· Included some changes to some of the code that deals with the Event Log.
· Added four new functions to set values in the Registry for behind the scenes access to the Registry.
· Updated the update checking code to first download the release version when a new release version has
been released when the user is the public beta branch. Before it would automatically skip to the next
beta branch version. This was incorrect behavior. The newest release branch version should always be
the version that's downloaded when a new branch version is released. If this situation occurs, the
program sets a value in the Registry to trigger an update check the next time the program runs to check
for any new public beta branch versions.
· Updated the HTTPHelper to version 1.245 which includes some changes to how it gets the system
proxy configuration.
· Put in a fix for an issue in which the Reserved System Restore Space for System Drive window locks
the program up. Thanks goes out to "nextgraf" for reporting this issue to me.
· Included some internal "behind the scenes" code changes.
· Moved the SSL image to the left side of the Update Message window.
· Included completely new update checking code based upon an XML document that's on my web site.
Being that it's XML it's far easier to parse than the convoluted code that I had before. It requires far less
code and is simpler to debug.
· Fixed an issue in which the scrolling of the textbox on the Update Notification window doesn't disable
the update countdown if the user uses a touchscreen to scroll it.
· Added additional handling of several common HTTP error codes.
· Fixed an issue on the Mount Shadow Copy Tool in which the Mount button wasn't disabled when a user
clicked outside of the column in the list. Clicking on the Mount button would then result in an
ArgumentOutOfRangeException exception. Thanks goes out to Nick Zdenkovic for reporting this issue
to me.
· Put in a question asking the user if the user wants to repair the system if error code 1058 is returned by
the system restore point API.
· Put in a question asking the user if System Restore Point Creator should attempt to repair System
Restore.
· Includes some changes to the some of the VSS related code.
· Added a new app setting, Confirm Smaller Restore Point Space Setting; this is used by the Manage
System Restore Storage Space window.
· Fixed a bug in which the program was giving an error about the new size being smaller than the old size
for setting the restore point space even though it was wrong. This was caused by a logic error in the
code. Thanks goes out to Mark Bitter for reporting this issue to me.
· Added the ability to turn off that confirmation via a checkbox on the window if you so chose to do so.
· Added several new handlers for various exceptions to improve program crash reporting.
· Updated HTTPHelper class to version 1.240.
· Added full custom proxy support to the program, these changes camr about because of additions to the
HTTPHelper class.
· Added the ability to convert many integer error codes into hex strings for crash reports and error
logging.
· Added the ability to check for updates immediately after changing the software update channel. This
removes an added step when changing update channels, namely the fact that you had to manually check
for updates.
· Included code to handle an IOException if the application settings file is locked by another process.
Thanks goes out to Brad Pospisal for reporting this issue to me.
· Added two new command line switches, "-deleteoldrestorepoints" and "-keepxnumberofrestorepoints".
Details about how to use these commands are in the About, Command Line Switches.
· Included a work around for a situation in which System Restore may return error 1058. The work
around sets the reserved space to 20 GBs, enables System Restore, and attempts to create the restore
point again.
· Added handling of IO.FileLoadException to the function that initiates a system restore to a previous
restore point.
· Included a new handler to log IO.FileLoadException since this exception type requires more logging
specific to this exception type.
· Clarified some things on the Confirm Restore Point Deletion window.
· Put additional checks into the Manage System Restore Storage Space tool.
· Moved the code that's used to document how many restore points will be deleted by the "-
keepxnumberofrestorepoints" command line argument to another part of the program's code.
· Added an additional call to the function that documents current restore points to the Application Event
Log before the call of the function that deletes an X number of restore points to document how many
system restore points the system had before and after the deletion routine.
· Fixed an issue in which the scrolling of the textbox on the Update Notification window doesn't disable
the update countdown if the user uses a touchscreen to scroll it.
· Added better handling of HTTP Protocol Errors such as 500 and 404 errors.
· Updated HTTPHelper class to version 1.225.
· Implemented a fix to a program crash in the Task Scheduler tool that could occur if the Task Scheduler
library returns an invalid task start time.
· Added a "Check All" and "Uncheck All" button to the batch confirmation window.
· Cleaned up some of the code in the configuration backup and restore feature as well as adding some
additional checks to the backup tool for path verifications.
· Put in a workaround for a situation in which the Windows Clipboard was locked by another program
thus can't be opened by my program. Thanks goes out to Philippe for reporting this issue to me.
· Changed much of the code dealing with list view items to add additional attributes for better handling
of data internal to the program. This includes multiple fixes and improvements to how the program
stores internal restore point details such as the ID, name, and date created.
· Enabled High DPI Awareness to many of the program's windows. Prior to this change only the main
window was High DPI Aware.
· Rewrote much of the code that works with the Windows BCDStore. Included a way to query if the Safe
Mode Boot flag has been set or not.
· Fixed some issues with the Please Wait window.
· Included some code optimizations to the Application Event Log window.
· One minor change was made to the to the performApplicationUpdate() function.
· Included an event log entry indicating that you already have the latest version when checking for a new
version.
· Changed much of the multi-threaded code to use Background Pool Threads instead of spawning my
own threads.
· Simplified the GUI code of the update notification window.
· Updated HTTPHelper to version 1.215.
· Added the ability to auto-elevate the task when executing the program with the "-createrestorepoint"
switch along with the "-name" parameter. This was broken in the past, thanks goes out to Paul Merritt
for reporting this issue to me.
· Added note to the Command Line Arguments window that the commands are recommended to be ran
from an elevated command prompt. Thanks goes out to Paul Merritt for reporting this to me.
· Fixed a bug in which the Reserved System Restore Space for System Drive window wasn't showing on
top of other windows like it should.
· Completely rewrote the selected restore point deletion routine. Now all confirmation of restore points
happen on the main thread with only the process of deleting said restore points being processed on a
background thread.
· Implemented a way for the user to tell the program to not ask to confirm the deletion of each selected
restore point if the user so chooses to do so once the confirmation dialog box is shown.
· Finally added a long requested feature to the program, the ability to confirm the deletion of selected
restore points in a batch.
· Included some code optimizations on the Disk Space Usage window.
· Finally fixed a handle leak on the disk space usage tool in which it was leaking system handles/objects.
· Updated the HTTPHelper class to version 1.200. The HTTPHelper class update includes a number of
fixes and improvements to the code for many of the program's HTTP requests.
· Added some thread sleeping commands to the application updating code as well as a notification that
the program is updating during application updating. Hopefully this will make updating go smoother
than in the past since we're going to wait for processes to close out instead of trying to kill them.
· Included some internal code changes when it comes to the Please Wait window.
· Added more logging to the application update routine to indicate that the update thread is sleeping for 5
seconds.
· Fixed a bug in which the Application Event Log Search Tool would cause a crash.
· Improved performance of the Application Event Log Search Tool.
· Includes some code optimizations to the Application Event Log Viewer.
· Massive amounts of changes to the code to better handle case insensitive string comparisons.
· Moved much of the error handling for HTTP requests to a central error handler more better error
handling.
· Cut down on many of the error message that users could receive if an HTTP request error occurs.
· Added multi-user support to the Create Restore Point at User Logon task.
· Changed the type of Event Log that's written to the Application Event Log when an HTTP error occurs.
· The program didn't give the user any feedback if the latest version was a beta version and the user chose
not to receive beta versions (only RCs). This has been fixed.
· Concentrated the decision to show either a message box or a balloon-type message based upon the
user's preferences to a new giveFeedbackToUser() function. This cleans up much of the code so that
there's not quite so many IF statements everywhere, just a call to a function.
· Optimized much of the code in the deleteRPLifeIntervalValue() and
giveFeedbackAfterCreatingRestorePoint() functions.
· Wrapped the code that retrieves the task schedule data on the Task Scheduler's Form Load Event to
better handle FormatException exceptions when loading invalid data data from the task's XML data.
· Fixed the saving of the Update Message window size.
· Made it so that there's not quite so many events that trigger the disableCountdown() function on the
Update Notification window.
· Cleaned up some code in the MyApplication_Startup responsible for loading several Registry key
values for the program.
· Included some changes to how the program accesses and closes out the RegistryKey objects.
· Moved the loadExceptionHandler() in the application startup routine to be earlier in the code than in the
past.
· Fixed a possible ArgumentException exception in the function that kills processes that have a certain
parent executable. This is mainly used during the application update routine to make sure that
executable files aren't locked during the program update process.
· Added the ability to save the size of the Official Changelog window.
· Changed the way that the program stores and saves some user preferences.
· Fixed a long standing issue in which the Please Wait window wasn't centered in the screen when
launching one of the Jumplist tasks.
· Fixed many of the message box title strings to not use the main window title's as the basis for the title of
the message box, it's now using a hard-coded string.
· Corrected the spelling of the word "weird" in many parts of the program, I had it spelled as "wierd"
which is wrong.
· Changed much of the code used to get the active power plan's GUID from the system.
· Removed the part of the code that changes the setting for the active power plan when the system is on
battery power.
· Added formatting of large numbers to the Application Event Log.
· Added new SRSetRestorePointW() as a fall-back API to the program as a backup to the WMI method
of creating restore points.
· Added new code to hopefully handle errors from the system restore APIs better than in the past.
· Added some minor code optimizations that have to do with empty String checks.
· Added better error messages for when a WebException occurs. Thanks goes out to "Shannon" for
bringing this to my attention.
· Fixed first line of About message box, it should not be getting the name of the program from the main
window's title bar.
· Fixed Balloon Tip title bar to not be based upon the main window's title bar.
· Removed some unnecessary error messages when my server doesn't respond properly.
· Increased the amount of time the program waits on an HTTP timeout from 10 seconds to 30 seconds.
· Moved much of the error handling for HTTP requests to a central error handler on the main window.
· Includes some additional fixes for the Create Restore Point at User Logon task.
There were a few changes/commits that didn't make it into this version and have been held back in the
"dev" branch of the program from which public betas and release candidate versions are built. I built this
general release version from version 5.0 Build 8 Release Candidate 3's code snapshot and cherry picked
one additional commit from later in the "dev" branch to build this public release version. Some of the
changes I made in later release candidates just weren't ready to be released yet and need more testing to
make sure that those changes are stable.
Anyways, onto the massive list of fixes by bullet point. I've decided to format the update notifications in
bullet point format for easier reading instead of a huge wall of text.
· Made it so that the routine that loads the list of restore points from the system into the listbox on the
main window waits 750 milliseconds so as to allow the main window to catch up and be shown to the
user.
· The Please Wait window will no longer show on the taskbar.
· Put some additional checks into the code for deletion of temporary files after the update is complete.
· Some additional minor tweaks to the code.
· Introduced the multirun mode for the Task Wrapper on Windows Vista since Windows Vista does
support it.
· Fixed an issue with the program asking if you really wanted to make the restore point.
· Fixed a long standing issue in which the Please Wait window that first appears when the program loads
while loading the system restore points into the list appears in the upper-left corner of the screen. This
was caused by the Please Wait window not being opened in the right program thread. The same issue
existed when downloading updates, with the Disk Space Usage tool, the Official Contact Form, the
manual crash submission form, and the crash submission form that is presented when the program
encounters a crash.
· Fixed a possible hang on close of the program that could occur if the Check for Updates thread routine
doesn't finish properly.
· Multiple bugs were fixed in the HTTPHelper class that the program uses for the checking and
downloading updates. This included fixing a couple of memory/object leaks. Updated the HTTPHelper
class to version 1.180.
· Fixed a possible NullReferenceException that may occur in the savePreferenceToRegistry() function on
the main window.
· Fixed a typo in the code in the savePreferenceToRegistry() function in which it wasn't passing the right
variable as the first argument to the Registry SetValue function.
· The application update process now doesn't download the compressed ZIP package from my web site to
disk, it instead downloads the data into system RAM and holds it there temporarily. This makes it so
that we don't write any unnecessary data to disk. For those who are geeks, I'm using a system RAM
backed IO.MemoryStream() to hold the downloaded ZIP file in.
· Fixed an exception that could occur if the user.config file was corrupted in some way.
· Included several improvements to the code across the entire program that deals with scheduled tasks.
This includes better validation of task settings.
· Put some safeguards into the Disk Space Usage tool to make sure that the window's handle has been
created and if not, code is been put into force the window to create the handle before anything else
happens.
· The Manage System Restore Storage Space tool wasn't loading the saved location, it was saving it but it
wasn't loading it; this has been fixed.
· Included some cleanup code when closing out the Official Contact Form to delete any possible files
created by the window such as when you want to attach the application logs.
· Optimized much of the code used to parse Boolean values from the application's System Registry key.
· Added some additional logging when updating the program.
· Fixed a possible crash on startup while attempting to delete the old updater.exe file that was used in the
past to facilitate the updating of the program. This was because the program was trying to delete the file
while the program was still running. This has been fixed by putting in a thread sleep command to wait
for the program to close before attempting to delete it after killing the process.
· Included some minor code optimizations.
· Added some Alt hotkeys to the Yes and No buttons to the Update Notification window.
· Added a countdown of 30 seconds until the Yes button is pressed for you on the Update Notification
window.
· Rewrote the process search and kill code to use Windows API calls instead of the WMI. This is in an
effort to try to minimize the dependence on the WMI and use more traditional Windows API calls
instead. Using more traditional Windows API calls is more efficient than using the WMI due to the
latencies involved in creating a connection to the WMI and querying it.
· Optimized much of the String comparison code in the program and most importantly improved the
performance of the CaseInsensitiveContains() function by no longer relying on slower RegEx-based
code.
The most important change in this new version is that I added some additional checks and safeguards as
well as introduced logging to both the extraction routines and updating routines that occur when updating
the application. You do have the ability to turn off the extended logging during updating but of course if
something goes wrong it will be harder to figure out what went wrong.
Because of an issue that cropped up with the setting of the runtime tasks for multi-run mode in the last
major release, the feature was removed from Build 2. That feature has been re-introduced in this Public
Beta build but in a different way.
· Fixed a regression on the Mount Shadow Copy Tool that caused an Explorer window not to be opened
upon mounting. This didn't cause an issue with mounting the actual shadow copy, just the opening of
Explorer.
· Fixed an issue in the wmi.searchForProcessAndKillIt() function in which even with double-checking if
a process ID exists, things can go wrong and cause an exception to occur. This has been fixed by simply
wrapping the process kill() function with a Try-Catch block to trap a possible error when killing a
process. Thanks goes out to Gerard Chantal for reporting this issue to me.
· Introduced some date verification code into the Task Scheduler tool when loading the tool to solve a
possible crash issue.
· Changed the default option setting for Log Restore Point Deletions to enabled.
· Cleaned up some code for the Task Wrapper.
· Issues with setting the MultiRun flag for existing runtime tasks had some issues, this has been corrected
by removing that part of the program. This functionality may come back in the future. Thanks goes out
to Slim McCoy and Jan van der Stegen for reporting this issue to me.
· Fixed an issue in which the vssadmin.exe command may be restricted by Group Policy Software
Restrictions, included a workaround for this issue. Thanks goes out to Martin Hill for reporting this
issue to me.
And now for the massive load of fixes and improvements to the program.
· Made some improvements to the update code, now one compressed ZIP file containing the required two
files for an update is downloaded instead of two uncompressed files. This should help speed up the
downloads of updates.
· Included additional version info that's written to the Application Event Log when updating.
· Included the ability to save the position of the main window on the screen.
· Changed some of the code checking to see if system restore is enabled on a system drive.
· Put log entry code into the function that checks if system restore is enabled on a system drive.
· Removed the option to disable HTTP Compression since that's no longer applicable to the update code.
· Included better handling of the PDB file while updating. Included better handling of situations in which
files can't be replaced for whatever reason; this has been resolved by allowing for the schedule of file
updating/replacement at system restart time.
· Updated embedded Microsoft.Win32.TaskScheduler library DLL to version 2.5.21.
· Fixed some minor warnings that pop up at compile time. Updated to allow for multiple instances of
System Restore Point Creator to be run by a user. This is not supported on Windows Vista systems, only
Windows 7 and newer.
· Included code to delete the legacy updater.exe file that may be left over after updating to a new version
that no longer requires the use of the updater.exe program.
· Included some additional tweaks to the code that detects if a system has System Restore enabled.
· Included checks to see if system restore is enabled on a system when using the jumplist tasks to create
restore points, this check was missing before.
· Added some additional checks if system restore is enabled during the creation of scheduled restore
points, this check was missing before.
· Fixed bug when creating runtime tasks. Fixed an issue in which creating restore points on newly
installed Windows installations was broken.
· Introduced more logging for scheduled restore point creation tasks. This can be disabled if you want to
but the default option is enabled. Enabling this option will result in more data being logged to the
Application Event Log for debugging and informational purposes.
· Fixed deletion of selected restore points in the list on the main window. Fixed an issue in which the
confirmation asking if you want to delete a selected restore point got lost behind other windows.
· Added a "Fix Runtime Tasks" tool to the System Restore Point Utilities menu. Put some additional
checks when executing the runtime tasks and a routine to automate the repair of runtime tasks if
specific settings for them were changed.
· Changed the behavior of the routine to delete selected restore points to be less confusing in terms of
messages at the end of the process.
· Got rid of the progress bar near the top of the window when deleting selected restore points.
· Fixed the Auto Fix function in which it didn't close the window after successfully performing the fix on
the Reserved Space for System Drive tool which appears when the program detects when reserved
system restore space is getting full.
· The program now remembers the location on the screen of more windows than just the main window.
The initial window starting location will be at the top of the screen but after that the program will
remember where you put it.
· Fixed a possible issue that prevented the system reboot command from executing, thanks goes out to
hiro for reporting this issue.
Many thanks goes out to Willem Grooters for pointing out many of these issues and working with me to
fix them.
And now onto the fixes and additions in this new version...
Put some more wording on the exception/crash submission forms to tell users to provide valid email
addresses. I still receive exception/crash reports with invalid email addresses. Seriously people, how am I
supposed to contact you if you don't provide a valid email address? That's right... I can't. I'M NOT
GOING TO SELL YOUR EMAIL ADDRESS TO SPAMMERS!!!
· Fixed a potential System.TypeInitializationException crash in the routine that adds the Windows quick
launch tasks for the taskbar.
· Added the ability for the program to saved the column sorting order for restore points, this was a
suggested by Andrey Chernov.
· Fixed some user input validation issues on the Task Scheduler window for the Max Age setting, thanks
goes out to "Paul" for reporting this issue.
· Improved much of the code that handles HTTP requests to better handle errors.
· Fixed a possible issue in which the program can't find the shutdown.exe command line tool to trigger a
system reboot due to incorrect environmental paths, the fix includes a full path reference to the
shutdown.exe tool located in Windows\System32. Thanks goes out to Ehoud Gluska for reporting this
issue to me.
· The Manage System Restore Storage Space tool has been redone to only control the space assigned to
the System Drive since for consumer versions of Windows that's all that counts. Redesigned the Disk
Space Usage tool with a complete code rewrite.
· Fixed a small bug on the main window in which the Restore Point Name text box wasn't being cleared
after the creation of a custom-named restore point.
· Included more wording on the Official Contact Form and the Crash Data Submission form that email
addresses will be kept STRICTLY confidential and that they will NOT be included in a mailing list,
sold to third-parties, or anything of the like. I have had some submissions in the past that resulted in
reply email addresses that don't exist. If I don't get a valid email address, how can I contact you?
· The Event Log search tool now tells you if you if it didn't find any results and how many results it
found, it also scrolls to the top of the event log list after the search is complete.
· Fixed the Event Log Search Tool in which the text box to enter in a search term is automatically
selected when the window appears.
· Set the default button on the message box asking if you want to submit a crash report in the Event Log
Viewer to be No.
· Changing the bar color on the Disk Space Usage tool no longer triggers a data refresh, only the color of
the bars change.
· Made it so that the "Manage System Restore Space" blue link only shows up for the system drive on the
Disk Space Usage tool.
· Removed a bit of debug code in the Set Progress Bar Color routine in which a message box appeared
out of nowhere.
· Made it so that when manually submitting crash reports from the Event Log Viewer the program will no
longer close after a successful data submission.
· Fixed a bug on the Task Scheduler window in which the Every setting would always be set to 2 even if
you input a valid input.
· The Task Scheduler now uses the Recurrence option in the Windows Task Scheduler as versus using
internal program logic to determine if a scheduled restore point is needed.
· Any scheduled restore point tasks will be upgraded as required the first time you launch the program.
· Fixed scheduled restore points in situations where the Every setting was set and that it wasn't creating
restore points as required.
· Fixed the checking of the "days" check boxes when loading the Task Scheduler window and the
schedule type is a weekly type. From this point on the Windows XP notice will be a permanent thing,
you will no longer be able to disable the window from coming back every time you launch the program.
· A lot of fixes for Windows XP on the main window as well as the Disk Space Usage tool.
· Included documentation for the various command line arguments that the program accepts.
· Added an additional command line argument for the "-createrestorepoint" argument.
· Included a handler for an System.OutOfMemoryException exception.
For those that don't know or haven't experienced this issue, Windows 8.x and Windows 10 has a tendency
of deleting old restore points regardless of the fact that you have enough space allocated to store those
restore points. It seems that as soon as those older restore points get older than 17 days they get deleted.
This wasn't the case on Windows 7, Windows 7 would keep restore points for as long as you had the
space to store them. This was one of the most annoying issues that I had with Windows 8.x and Windows
10, until now. Thanks to Gregory M. Day, he found that there is a background task that is run every time
you restart your computer and guess what? It was what was responsible for deleting those restore points.
So, Restore Point Creator now has code in it to disable this task so you, the user, now have more control
than ever before over Windows System Restore. Many thanks goes out to Gregory M. Day, his
observations helped cure Windows 8.x and Windows 10 of this System Restore curse.
Version 4.0 represents a major milestone for Restore Point Creator, I can finally say that I'm pleased with
the direction that the program is taking and how well it's matured since the very first release back in
January of 2013. When I released it way back then I meant it as a simple utility but lately it's become
something much larger than that, an indispensable tool used by many people around the world. I didn't at
all think it would become what it is today. But enough about that... now onto the fixes.
· Moved the About notice and link to the program's product web site to be sub-items of About.
· Added a notice to ask users to donate. Yes, this program will always remain free to use with
absolutely no limitations to the use of the program but still donations are welcome. If you click "No"
to the message asking you to donate you will never see the program ask again unless of course you
uninstall and reinstall the program.
· Added more checks throughout the program for file existence.
· Custom colors for the bar color chooser on the View Disk Space window is now saved in the
program's user preferences, before this was not the case.
· Added a bunch of new descriptive icons throughout the program.
· Made it so that the "Delete All Restore Points" option under the utilities menu is hidden if the system
is Windows XP.
· Moved the "Close after Restore Point is created" checkbox to the Program Options menu.
· Added a message box to the Delete All Restore Points function asking you if you really want to do
that.
· Moved "Delete All Restore Points" and "Delete Old Restore Points" to be sub-items of "Delete
Restore Points" in the Utilities drop-down menu.
· Put a notice of sorts into the textbox to type in a name for a restore point to type something in that
box.
· Increased the default width of the main window to make things fit better.
· Made it so that the program displays a message while creating and deleting restore points and will
notify you that things are being done in the background and that message will not go away until the
process is complete. This is much like how the Windows native Restore Point UI works. This window
has a four minute timeout to close the window by itself but ordinarily this event shouldn't occur.
· Put some code into the program to write a "last run" file for scheduled tasks, this way you can
determine when the last time the task was run.
· Fixed a possible regression in which scheduled restore points weren't being created.
· Imported many of the constants from the SRClient.DLL file for improved error checking during the
creation of restore points. Now you should get more meaningful error messages other than a success
or a failure.
· Added additional user privilege checking at startup to make sure that the program is running with
system Administrator privileges/rights.
· Some more debugging of task scheduler creation code is needed, some users have reported the task
scheduler crashing on Windows 7 which I have throughly tested and have come up with nothing
conclusive. I have put crash detection code into place to try and narrow down where the problem may
be.
· Changed the way that crashes are caught when unhandled crashes occur in the proogram, this should
make the program catch more unknown crashes.
· Windows XP will continue to be supported past the date of April 8th, 2014 but in an extremely
limited capability. Scheduled tasks under Windows XP will be completely disabled and any existing
scheduled tasks will be automatically deleted by the program. This is because debugging scheduled
tasks on Windows XP is proving to be far more difficult than I initially thought it would be. Much of
the code that I use to access the Windows Scheduler is provided by a DLL that was written for
Window Vista or newer and getting it to work on Windows XP without major hacks is difficult.
· Added the ability to change the update channel from beta to stable for future testing.
· Fixed an issue in the Restore Point deletion function in which a malformed date string could crash the
program, this has been fixed by storing the raw date data from the restore point sub-system in the
program's memory and using that instead of parsing what's in the list of restore points.
· Included some fixes in other areas of the program to help prevent crashes while attempting to parse
invalid data.
· Fixed several possible Null Reference Exceptions that may occur with the log file writing functions,
ordinarily this shouldn't happen at all but in those very rare occasions (less than .01%) a fix as been
put into place.
· Build 2: Updated the embedded Microsoft.Win32.TaskScheduler.dll that's used by the program to
access the Windows Scheduler.