- a developer's blog

Shell Extension: Meaning, Risks & Removal

Before we try to understand the term “shell extension”, it is imperative to know a bit about the terms “shell” & “kernel”.

The term Kernel, refers to the core program of the operating system. The kernel is what actually does the hardware access, sharing of CPU time, allocation of process IDs to each process, process execution,  and ownership management and every function that an operating system is supposed to do.

The shell is a piece of code(software)  that provides an interface between the user and the operating system(kernel). Simply put, shell is a software that takes commands which are typed on the keyboard (or mouse – for GUI interfaces) and passes them to the operating system for their performance.  A command line terminal is a classic example of shell.

Other examples of shell include the DOS command box and The Run command in windows.

What are Shell extensions ?

Shell extensions are program codes written by third party developers that modifies the way the shell interacts with the Kernel. A shell extension modifies the way an operating system responds to a command.

When to allow shell extension ?

Shell extensions are maintained by third party authors. Any shell extension code becomes a part of the core operating system.

For this reason  – you should add a shell extension only if you are sure of the credentials of the software supplier. Allowing modification of shell extension by unverified programs can adversely affect  the behavior of your operating system.  Many programs add shell extensions without user’s permission.

Installing unverified shell extensions can result in operating system misbehavior or crashes. Invalid shell extensions can affect the registry – causing unwanted behaviors slow down a PC.

Malicious extension may also be injected into the shell – causing damages ranging from display of unwanted advertisements, spying to complete system crash.

How to remove/uninstall a shell extension?

Different operating systems provide different methods for removing extension.

For Windows:  For removing a shell extension in window (98/ME/XP/2007):  Browse to the registry editor (type regedit in the run command) and look at this key:  HKEY_CLASSES_ROOT\Directory\shell\.   Simply delete the entries of unwanted extension. Always backup your registry before you edit it, in case things go wrong.

Alternatively free programs like NirSoft ShellExView  provides a GUI list of all installed shell extensions. It also allows the users to easily disable,  enable and remove each shell extension.

For Unix like operating systems (Linux distros):  Different Desktop environments like Genome, XFCe provide different methods for uninstalling extensions. Normally you will have to first locate the shell folder on your disk.  For example – Genome extension are normally stored under ~/.local/share/gnome-shell/extensions

To uninstall/ remove the extension simply delete the extension’s directory.  After deleting the directory you will have to restart the shell. To restart the shell open the command line terminal from within the shell folder and simply type restart and press enter.