Looks great. But with the EZShellExtensions.Net product, I'd be very careful writing shell extensions in .NET, because there can be a lot of versioning problems there.
The ideal solution would be similar to ASP.NET where the .NET stuff is hosted in a totally separate process, and the "framework" that they provide is in unmanaged code.
The problem isn't that you might have .NET 1.1 and .NET 2.0 extensions at the same time (which the .NET folks have tried very had to get right anyway). The problem is that if you run a .NET 1.1 application which then pops up a file Open/Save dialog, that dialog uses loads the shell into it's process, which will try to load your extension. If your extension is .NET 2.0, then it's going to crash.