The centerpiece of Microsoft Windows' UI is called Windows Shell. Classically it was Windows Explorer, but I understand that in Windows 8 it's something else ("Immersive Shell"?) Anyways, it's possible to replace the shell with something else - Windows itself supports Command Prompt as the shell out of the box, but there are several 3rd party shells available as well, and have been for more than two decades.

At the same time there's something called "The Shell API". It includes a lot of functions, interfaces, registry keys, etc. which are designed to allow a program to interact with the Shell. You can, for instance, show the Windows File-copy dialog from your own program; navigate the Shell Namespace, write an extension for the Shell; etc.

And this confuses me. If the Shell can be replaced, doesn't that mean that the Shell API is replaced with it? Won't installing a different shell break all the applications that use the Shell API? Even more - things like the Shell Namespace are essential to Windows as such; I can't imagine replacing it with something else.

Or is it so the Shell API is separate from the Shell itself, and every replaceable Shell must implement a specific set of interfaces (and adhere to mandatory conventions like the Shell Namespace) in order to work?

有帮助吗?

解决方案

It is separate. The shell is Explorer.exe. The shell api is implemented in DLLs. So you can use them even if Explorer.exe isn't running.

Of course don't expect shell extensions to work in a replacement shell.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top