What is a shell extension

A shell extension is a regular dll file implementing an in-process COM server. An extension enhances the functionality of the Windows shell, which is Explorer by default. Extensions enhancing the functionality of the Internet Explorer and Disk Cleanup applications and the Indexing and Windows Search services can also be considered as shell extensions. Besides Explorer, the functionality of many other applications is automatically enhanced. For example, if you install an extension that dynamically determines the appearance of a file icon, any program that uses the Open or Close dialog box will automatically show the file icons determined by the extension.

Since a shell extension is an in-process COM server, it can be loaded only by an application of the same bitness. It means that 32-bit extensions will not work with the 64-bit version of Explorer, while 64-bit extensions will not work with the 32-bit version. That is why it is recommended to create and include both the 32- and 64-bit versions of your extensions when you distribute them (and if the 128-bit version of Windows appears, you will have to create the 128-bit version of the extension as well). Regarding the Delphi development environment, it means that it is recommended to create extensions in the Delphi version not earlier than Delphi XE2 because it became possible to compile 64-bit applications and libraries only in Delphi XE2.

See also: