OK, so schwer wars garnicht: bei einzelnen Dateiendungen werden die Registrierungsschlüssel für Shell-Erweiterungen ja nicht direkt im Schlüssel der Erweiterung (z. B. HKEY_CLASSES_ROOT\.jpg) gespeichert, sondern in einem anderen, auf den der Schlüssel der Erweiterung verweist (z. B. HKEY_CLASSES_ROOT\.jpg verweist auf HKEY_CLASSES_ROOT\jpegimage). Bei dem Schlüssel für alle Dateien (HKEY_CLASSES_ROOT\*) scheint das nicht zu gelten, da stehts direkt drin, bei mir auch noch 7-Zip und ICQ, und wenn man da rein schreibt wird der Menüeintrag auch angezeigt. Man kann sich den ersten Teil also sparen.
Delphi-Quellcode:
procedure TBlubExtFactory.UpdateRegistry(Register: Boolean);
var
ClassID: string;
begin
if Register then
begin
inherited UpdateRegistry(Register);
ClassID := GUIDToString(GUID_BLUBEXT);
CreateRegKey('*\shellex', '', '');
CreateRegKey('*\shellex\ContextMenuHandlers', '', '');
CreateRegKey('*\shellex\ContextMenuHandlers\BlubExt', '', ClassID);
end
else
begin
DeleteRegKey('*\shellex\ContextMenuHandlers\BlubExt');
inherited UpdateRegistry(Register);
end;
end;