Overview

KidSafe is a computer-locking application designed to keep young children from messing something up.

KidSafe will launch a full-screen window that hides the entire desktop, TaskBar, etc. Because the window is blank (except for the unlock entry box; see below for details), clicking it won't have any effect. Small children, who generally enjoy clicking the mouse, can click all they like without damaging anything.
If the appropriate option is set, KidSafe also prevent the system from being shutdown - even if a small child presses the power button, the system won't shut down.

If the appropriate options are set, KidSafe can disable all of the system keys - the Windows key, a combination of the Windows key and any other key, Alt-Tab, Alt-Escape, Ctrl-Escape, and Ctrl-Alt-Delete. This can be very useful, especially if a small kid keeps accidentally opening the Start Menu and selecting items in it: just disable the Windows key and the Ctrl-Escape key combination, and voila! No more Start Menu.

Setting up KidSafe

Due to popular demand, KidSafe has had a graphical interface for editing its options since version 3.6.0.0; however, it's very difficult to accidentally turn a setting on.
Settings can't be changed without entering the unlock keyboard shortcut (unless there's no unlock shortcut set), and the preference entry fields are almost impossible to change without meaning to - the entry fields are textboxes, not multiple-choice options, and the textboxes are carefully set up so incorrect input turns the given option back off.
Each setting starts with a default of off, or NO, and YES must be entered to turn the setting on. Entering anything other than YES will automatically turn the setting back off.
Also, KidSafe's feature disabling is only temporary - even if KidSafe crashes, none of the disabled features will stay disabled. The worst that can happen is that you might need to reboot your computer to restore everything the way it had been before. Even the Task Manager will be restored - unlike some applications, KidSafe's blocking of the Task Manager is only temporary. Even if KidSafe crashes, the Task Manager won't stay locked.

Closing KidSafe is very easy - just press the unlock key combination you set (in case you forgot, it's shown in the label above the textbox), then press the OK button. KidSafe will compare the key combination you typed to the real key combination (just in case a little kid might be typing in the unlock textbox), and close if the two entries match. If they don't match, KidSafe will put up an error dialog; close it by hitting the "OK" button. Once the two entries match, KidSafe will close and all of its changes will be undone.
(In Screensaver mode or Hotkey mode, the "OK" button is replaced by two other buttons, "Hide" and "Close")
If there's no unlock key combination in the preferences file, or the preferences file doesn't exist, KidSafe will automatically close - this is a precaution designed to avoid trapping users in the KidSafe dialog without a way to exit.

Manually editing the KidSafe configuration file

KidSafe's configuration file is fairly simple to edit manually as well (except for the hotkeys); there are only a handful of values you can edit, and almost all of the values are simple true/false choices.

The configuration file is saved in the Data folder as Prefs.dat; here is its structure.

[GUI]
BackgroundGraphic=
HotKey=
HotKeyModifierMask=
Mode=
TimeOut=
UseSystemTrayIcon=

[Locks]
LockAltEscape=
LockAltTab=
LockCtrlEscape=
LockShutdown=
LockTaskManager=
LockWindowsKey=
PutKidSafeOnTop=
UnlockShortcut=
UnlockShortcutModifierMask=


BackgroundGraphic - the path to the image used as the background graphic for the KidSafe window. Images in BMP, GIF and JPG/JPEG format are guaranteed to work; other image formats may work, but probably won't unless you have QuickTime installed on your computer. Because of this restriction, only BMP, GIF and JPG/JPEG images are shown in the Options dialog; if you want to use another image type, you'll need to manually edit the configuration file.
If you specify a file that doesn't exist or isn't an image file, KidSafe will use its default background graphic instead.

HotKey - a numerical value from 0 to 255. Specifies the virtual-key code for the KidSafe hotkey. (Unless you're a programmer, you probably don't want to edit this manually; it's easy to break something, and somewhat difficult to get the correct value)

HotKeyModifierMask - a numerical value. Specifies whether the hotkey should include the Ctrl key, the Alt key, the Shift key, the Windows key (also known as the Start key), or a combination of these.

LockAltEscape - true or false. Specifies whether the Alt-Escape key sequence should be disabled or not.

LockAltTab - true or false. Specifies whether the Alt-Tab key sequence should be disabled or not.

LockCtrlEscape - true or false. Specifies whether the Ctrl-Escape key sequence should be disabled or not.

LockShutdown - true or false. Specifies whether the system shutdown is disabled or not. (Note: even if LockShutdown is set to true, trying to shutdown the computer might close some of your applications. This is a limitation of Windows, not KidSafe)

LockTaskManager - true or false. Specifies whether the Task Manager should be locked or not. (Note that any running Task Manager instances will be closed)

LockWindowsKey - true or false. Specifies whether the Windows key (aka the Start key) should be disabled or not. If set to true, it will also disable all key combinations involving the Windows key, including Windows+R (run a program) and Windows+M (minimize all windows)

Mode - 0, 1 or 2. Specifies whether KidSafe should be in normal mode, screensaver mode or hotkey mode. If set to 0, KidSafe will immediately open its fullscreen window; if set to 1, KidSafe will run in the background and monitor the system. KidSafe will essentially behave like a screensaver, checking for system activity; if the system remains inactive for the number of seconds specified by TimeOut, KidSafe's fullscreen window will open. This could be extremely useful for someone who has to leave their computer periodically, since KidSafe won't activate until the computer's been idle for the time period specified by TimeOut's value. If Mode is set to 2, KidSafe will run in the background and wait for you to press the user-defined hotkey that activates KidSafe.

PutKidSafeOnTop - true or false. Specifies whether the KidSafe window should be placed on top of every window (including the Start Menu and Alt-Tab dialog) or not.

TimeOut - a number value. If Mode is set to 1, KidSafe will run in the background and monitor the system. KidSafe will essentially behave like a screensaver, checking for system activity; if the system remains inactive for the number of seconds specified by TimeOut, KidSafe's fullscreen window will open. This could be extremely useful for someone who has to leave their computer periodically, since KidSafe won't activate until the computer's been idle for the time period specified by TimeOut's value.

UnlockShortcut - a numerical value from 0 to 255. Specifies the virtual-key code for the hotkey that closes KidSafe. (Unless you're a programmer, you probably don't want to edit this manually; it's easy to break something, and somewhat difficult to get the correct value)

HotKeyModifierMask - a numerical value. Specifies whether the UnlockShortcut hotkey should include the Ctrl key, the Alt key, the Shift key, the Windows key (also known as the Start key), or a combination of these.

UseSystemTrayIcon - true or false. If set to true, KidSafe will show its icon in the system tray; double-clicking the tray icon will show the KidSafe window. (The tray icon is only shown in screensaver mode or hotkey mode, since it isn't necessary in normal mode.) The tray icon also serves as a reminder that KidSafe is running.

The default setting for each of these options is false (to be precise, the default setting is false, 0, or nothing, depending on the value type); if you want to lock anything, you'll need to manually set the value of its setting to true. This is a safety limitation designed to avoid accidentally locking something you didn't want locked.




Credits:

  • agdurrette did a stellar job beta testing, provided a great user's-eye view of KidSafe, and suggested CodePlex for hosting the project
  • gluxon provided a critical bug report for Vista, and subsequently confirmed the bug fix
  • digitxp made some valuable suggestions, provided a great new icon, and pointed out a flaw in KidSafe's PAF compliance
  • BuddhaChu made sure KidSafe wasn't violating any trademarks
  • Aaron Ballman provided the impressive & powerful Windows Functionality Suite; KidSafe uses code from it in several places
  • d3nn1as provided a critical function to get a file path from a process ID
  • babasse created the cool padlock icon
  • tiarescott created the nice beach background that is KidSafe's default background image
  • Tim Clark, GizmoKid2005 and John T. Haller made some valuable suggestions on making KidSafe more secure (less vulnerable to being abused by malicious users)



Changelog

Version 5.0.1.0
  • Bug fix: Entering the unlock shortcut failed in the preferences dialog
  • Bug fix: Fixed several minor errors in the code
  • Improvement: Preferences dialog now shows correct unlock shortcut, just like the KidSafe main window

Version 5.0.0.0

This version has had significant changes made, including an almost-complete rewrite of the "unlock text" areas (which no longer exist). The purpose of these changes was to prevent KidSafe from being abused; although the protections are vastly weaker now, they will still serve an important function - protecting your computer from little kids.

Version 4.7.1.1

IMPORTANT: THIS IS THE LAST KIDSAFE RELEASE OF THIS NATURE. KIDSAFE 5.0.0.0 IS IMPOSSIBLE TO ABUSE, BUT IS ALSO EASY TO DEFEAT - IT IS INTENDED SOLELY FOR PROTECTION AGAINST KIDS TOO SMALL TO READ. IF YOU NEED TO PREVENT AN OLDER KID FROM ACCESSING YOUR COMPUTER, THIS IS THE KIDSAFE RELEASE YOU'LL NEED TO USE.
  • Improvement: Help files are stored inside the KidSafe folder now, making it harder to lose/accidentally delete them (this also fixes a PAF compatibility problem)

Version 4.7.1.0
  • Bug fix: "Confirm new unlock text" textbox sometimes went into password mode (hid text behind a row of asterisks) inappropriately
  • Improvement: "Treat unlock text boxes as password-entry fields" now defaults to "YES" and changes to "YES" if the user enters anything other than "YES" or "NO"

Version 4.7.0.0
  • Improvement: "Enter new unlock text" in Options dialog now requires you to confirm the new unlock text (thanks to sar3th for RFE)

Version 4.6.0.0
  • Improvement: Restructured Prefs.dat
  • Improvement: Rewrote help system to make it much easier to update, maintain, and add items to (users can now add their own help items as well).
  • Improvement: User must be an admin to run KidSafe (thanks to Tim Clark for report)
  • Improvement: Frequently checks to make sure the KidSafe executable exists; this will help avoid problems when running KidSafe from a flash drive (thanks to GizmoKid2005 for report)

Version 4.5.1.1
  • Bug fix: Even if LockTaskManager was false, minimizing and restoring the KidSafe window would sometimes close the Task Manager
  • Improvement: Updated Help system, including credits
  • Improvement: Updated README
  • Improvement: Updated code comments
  • Improvement: Source code is now packaged in a simple, text-based format any text editor can open

Version 4.5.1.0
  • Bug fix: Entering any unlock text would work, regardless of whether it was correct or not (thanks to agdurrette for report)
  • Bug fix: "Use old unlock text" didn't correctly save the old unlock text, causing problems later on
  • Improvement: If the settings folder doesn't exist, KidSafe will attempt to create it instead of failing silently; in the event the settings folder can't be created, KidSafe will display an error message before exiting

Version 4.5.0.0
  • Bug fix: Setting LockTaskManager would keep the Task Manager locked even if the KidSafe window wasn't shown (i.e. in screensaver mode or hotkey mode)
  • Improvement: "Options" dialog now has a "Cancel" button
  • Improvement: Changed some code to make it less error-prone

Version 4.4.0.0
  • Improvement: Opt-in system tray icon is now shown in screensaver mode and hotkey mode (thanks to agdurrette for RFE)
  • Improvement: Added "Close" button in screensaver mode and hotkey mode; this functionality replaces the older SHIFT keypress + OK button combination. (thanks to agdurrette for RFE)
  • Removed: System tray mode has been removed, since its functionality is now duplicated by hotkey mode

Version 4.3.2.0
  • Bug fix: KidSafe lockdown settings were enforced even if the KidSafe window wasn't shown

Version 4.3.1.0
  • Bug fix: Opening KidSafe without Prefs.dat being present would cause an endless loop in the Options dialog and, eventually, a crash
  • Bug fix: Error messages displayed during the prefs-loading operation would show up behind the KidSafe window

Version 4.3.0.0
  • Bug fix: Several of the project files, including most of the help system files, were treated as external files (this could cause problems for people trying to view KidSafe's source code)
  • Improvement: Added System Tray mode (thanks to agdurrette for RFE)

Version 4.2.0.0
  • Bug fix: Debug logging was left on in version 4.1.2.0
  • Bug fix: Some classes, modules, etc. were treated as external files (this could cause problems for people trying to view KidSafe's source code)
  • Bug fix: "Select hotkey" preference in the Options dialog wasn't disabled when Normal mode was selected (thanks to agdurrette for reporting)
  • Improvement: Deleted a lot of unnecessary code
  • Improvement: Added more code comments & updated some existing comments to reflect recent changes in KidSafe's code
  • Improvement: KidSafe window's caption is continually changed to a random-length string, not just a random-character string, making it even harder to close programatically
  • Improvement: Only one instance of KidSafe can be run at a time; this will prevent problems caused by multiple instances of KidSafe running (thanks to agdurrette for reporting)

Version 4.1.2.0
  • Bug fix: Specifying an incorrect Mode value (such as -3) in the preferences file will now default to normal mode
  • Bug fix: Entering the correct unlock text to use the preferences GUI wasn't required (entering ANY text would work, regardless of the correct unlock text)
  • Bug fix: "Lock system shutdown" preference frequently prevented KidSafe from shutting down, even after the correct unlock text was entered

Version 4.1.1.0
  • Bug fix: Error messages would be shown behind the KidSafe window, sometimes requiring a computer restart to close
  • Bug fix: Changing the options using the preferences dialog would improperly restart KidSafe, resulting in it being unable to access the preferences file

Version 4.1.0.0
  • Bug fix: KidSafe didn't check to make sure there was a hotkey set before entering Hotkey mode
  • Bug fix: Setting KidSafe options without setting the hotkey again would clear the hotkey
  • Bug fix: Trying to use an already-in-use hotkey will display an error message instead of failing silently
  • Improvement: Updated Help system
  • Improvement: Added custom background graphic option (thanks to agdurrette for RFE)

Version 4.0.0.0
  • Improvement: Added Hotkey mode
  • Improvement: Holding down the Shift key and pressing OK in Screensaver mode or Hotkey mode will close KidSafe instead of just hiding the window; this functionality replaces the "Tools -> Shutdown" menu item

Version 3.7.0.0
  • Improvement: Rewrote a lot of code to be cleaner & neater
  • Improvement: If the Prefs.dat file is manually edited while KidSafe is running, the preferences will no longer be updated until KidSafe restarts; this will prevent a lot of trouble with some updated preferences being immediately updated in the KidSafe window and some updated preferences not being updated until KidSafe restarts.

Version 3.6.0.0
  • Bug fix: Message boxes appeared behind the main KidSafe window, which required the computer to be restarted
  • Bug fix: LockCtrlEscape now works without the KidSafe window having to be always on top
  • Improvement: Default settings folder is now stored within the main KidSafe folder instead of being a separate folder; this will be helpful for the ZIP archives & the installers. PAF releases, thanks to the special launcher, can still use the separate Data folder.
  • Improvement: Main KidSafe window continually changes its title to a random string, making it difficult or even impossible to close programatically.
  • Improvement: Unlock text is no longer stored as plain text, making it significantly harder to crack
  • Improvement: Added preferences GUI
  • Improvement: "Unlock text" boxes are now treated as password-entry fields by default
  • Improvement: Added new "Place the KidSafe window on top of every other window" preference
  • Improvement: Speeded up keyboard input-handling (used when checking to see if a keypress should be blocked or not)
  • Improvement: Added "Shutdown" menu item to shut down KidSafe in screensaver mode instead of having it hide for the period specified by TimeOut

Version 3.5.1.0
  • Bug fix: Other windows could be shown in front of the KidSafe window (thanks to agdurrette for reporting)
  • Bug fix: LockCtrlEscape didn't always work (thanks to agdurrette for reporting)

Version 3.5.0.0
  • Bug fix: The Start Orb could still be accessed on Windows Vista & Windows 7 (thanks to gluxon for reporting)
  • Bug fix: Even with LockTaskManager set to true, the Task Manager could sometimes be accessed
  • Improvement: Added a beach background graphic to the KidSafe window instead of leaving a plain window (thanks to agdurrette for RFE)

Version 3.4.0.0
  • Bug fix: setting LockTaskManager to True failed to lock the Task Manager if the Task Manager was already running
  • Improvement: added a shiny new icon (thanks for creating this, Babasse, and thanks for pointing me to it, digitxp!)

Version 3.3.1.0
  • Bug fix: If the prefs file or unlock text are missing, KidSafe will abort on startup instead of after an unlock attempt

Version 3.3.0.0
  • Initial release

Last edited Jan 1, 2010 at 6:58 AM by computerfreaker, version 6

Comments

No comments yet.