My Toolbox App

This post is intended to serve as an introduction to my Toolbox app, giving a brief history of it’s development over time and the current features available in this public release.

Before getting into the details, the project files for Toolbox (created with PowerShell Studio 5.4.139) can be found on GitHub. I’ve never used GitHub before, so I apologize in advanced if I’ve setup anything wrong. In addition to the project files on GitHub you can find ready to use options below:

  • x64 EXE (Just a simple executable you can run from anywhere on your system.)
  • x86 EXE (Just a simple executable you can run from anywhere on your system.)
  • x64 MSI Installer (A basic MSI installer that will install Toolbox to C:\Program Files and create a start menu shortcut.)
  • x86 MSI Installer (A basic MSI installer that will install Toolbox to C:\Program Files and create a start menu shortcut.)
  • PS1 Export (A PS1 file you can run, view, edit.)

I apologize in advanced for the lack of documentation around this tool. If there’s a lot of interest in this tool I’ll certainly circle back around and develop more documentation, however for now the below will have to do. Hopefully you find the Toolbox app as useful as my co-workers and I have. If you have any suggestions or feedback feel free to leave it.

Toolbox History
As for the history of the Toolbox app, initially this app started out as a very simple static list of other PowerShell forms based apps I’ve created over the years. Over time I configured all my PS forms apps to use a central repository that contained an INI file with variable values and a PS module that contained shared functions. Shortly after that I added the ability for the PS forms apps to see what version they were, compare that to a source version in the central repository and auto update if necessary. With the source versions of all my PS apps in the repository, the Toolbox app then gained the ability to auto-install PS forms apps from the repository. After polishing up the interface, functionality, and adding many more features (like using a ListView with icons instead of a listbox), I soon had the majority of my co-workers (in the IT Infrastructure/Support Desk areas) at my workplace using the Toolbox as a means of accessing the PowerShell forms apps I had built. To make the Toolbox more useful I added the ability to add custom apps to the Toolbox in addition to my custom built PowerShell forms apps. This allowed for my co-workers to add custom entries for things like Command Prompt, ADUC, GPMC, SCCM Console, ect to the Toolbox. Mix that with launching the Toolbox as an administrative account (at least in environments where you log in with a standard account and then elevate with an admin account for administrative things) and you now have a scenario where you launch the Toolbox as your administrative account in the morning and then are able to launch your other items from it without have to elevate every time.

Toolbox Public Release
For some time now I’ve debated releasing some of the PowerShell forms app’s I’ve made publicly. Unfortunately most of the time they’re fairly customized to my work place or the app is more than just running a single script / executable and having a functional solution. The Toolbox app though was something I felt I could easily enough generalize for a public release, and in a reddit comment I had at least two people interested in seeing it, so here it is.

For this initial public release of the Toolbox app I copied the latest version of my internal Toolbox app and went through removing any reference to my work place and any features that were really geared towards my work place. Because of this there might be some things in there that I left that don’t actually do anything with the form, or some things that look out of place or cryptic because they interface with a shared function that’s been modified for this public release.

What it is
The Toolbox in its public release form is a basic window that you’re able to add shortcuts to. The shortcuts can go to any shortcut or executable on your system. Ideally you log into your workstation as a standard account with no administrative permissions, and then you launch the Toolbox as a separate admin account. As you then launch the items from the Toolbox, they launch as your admin account.

To add custom apps (shortcuts) to the Toolbox, either right click anywhere in the white listview area and click ‘New Custom Tool’ or go to File -> New Custom Tool.

To edit an existing custom app, right click the app shortcut in the Toolbox and click Edit.

To remove an existing custom app, right click the app shortcut in the Toolbox and click Remove.

Behind the scenes
So behind the scenes the Toolbox works by recording settings to the registry. The default key that the settings are stored under is HKCU:\Software\intrntpirate\Toolbox. Under the Toolbox key there’s a key called ‘CustomAdd’ which will then have a key under it for each custom item added to the Toolbox. Each items key will have a couple of items in it that define the custom items name, path to execute, any arguments, and icon information.

When you launch a item from the Toolbox it’s really just running a simple Start-Process command using the path to execute from above and any arguments defined. Pretty basic…

The icons displayed in the Toolbox are pulled from whatever item is in the path to execute. If you’re pointing to a shortcut, the icon the shortcut has will be used. If you’re pointing to an executable, the executables icon will be used. Alternatively you can define a custom icon if you’d like.

Logging is set to basic logging by default, with the log file going to C:\Temp\intrntpirate\Logs. You can enable debug mode under the Help menu which will result in verbose logging. The log file is in a CMTrace format.

Below are some screenshots for those that would prefer to see the Toolbox before attempting to run it.

Main window when launched:



Window for adding a custom item:




Main window with custom item:

Hits: 1684

One thought on “My Toolbox App”

Leave a Reply

Your email address will not be published. Required fields are marked *