This is a story about a tool that shouldn’t need to exist, but has proved to be just so darned handy over the years. It was originally written almost 10 years ago, and I recently released an updated version to add more features. This free tool is called LaunchIT.
The most common problem that cause people to ask me for this tool is the following senario. A Citrix XenApp (or any of the other 5 previous names for that product) user runs a “seemless” application. When they launch the application from their client desktop, it logs them into a remote session on the server, where the application window is cut and shown on the client desktop for the user to interact with. When the user is done with the application, they close the window they see. If any additional processes were opened on the server session, the session remains open. The additional process might be a background processes without a UI element, or it might be one that lives in the icon tray. But the bottom line is that the user doesn’t realize it is there. The user isn’t aware of this and continues to chew up server resources (until they eventually get disconnected).
The other situation is with an application virtualization product, such as Microsoft App-V. Like the Citrix case, these child processes that remain open keep the virtual application environment open (and if the virtual app was on a XenApp server it kept the session open too). A few years after I wrote this tool, Microsoft tried to address this issue with App-V by adding an OSD parameter (TERMINATECHILDREN). Setting this in the OSD solves many, but not all of the situations covered by this tool.
In general, you run LaunchIt and pass the program to be controlled as a command line paramter, possibly with addition arguments. It detects the termination of the main program and identifies any child/grandchild process for additional termination. But each year I get odd requests to extend the funtionality of the tool, because someone needs an easy way to apply special control over an application process. With release 5.0.1, we have even more features.
- What To Terminate LaunchIt will locate more than direct child processes. The App-V TERMINATECHILDREN does not and will miss these.
- What To Do By default, it silently kills the identified processes. But add a /v parameter, and it puts up a dialog box to the user informing him/her of the processes and asking permission to kill them.
- Processes to ignore Some processes we want to exempt from the kill list. A list of process names can be provided to be ignored.
- Processes to hide Sometimes IT runs additional hidden processes in the background, needs them killed, but doesn’t want the users to be aware of them. Even with the /v option, those process names in this list will not appear in the popup dialog, but will be killed. Note: this does not hide the processes from the task manager, so we aren’t talking malware here.
- Extra Environment Variable Changes You can register additional environment variable changes to affect only this process and its decendents.
- Extra Process You can name a second process to run after wating for the first one to start. An odd use case, but necessary one.
Version 5.0.1 is now immediately available from a zip file at this link. It is a small free tool (about 38kb, no installer) that sometimes comes in handy. Just run LaunchIt.exe /? for details on the syntax and registry. What can you use it for?
Note: The bad link to the software in the original article has now been fixed.