Servus und frohes neues Jahr.
Hab das auch schon mal vor langer Zeit gemacht. Hier die Funktion um ne Erweiterung zu registrieren:
Delphi-Quellcode:
// app muss den kompletten Dateipfad + Dateiname des Programms beinhalten
// fileext soll die Erweiterung sein (ohne Punkt)
// caption ist der Text der angezeigt werden soll
function RegConMenu(app, fileext, caption: String): Boolean;
var
reg: TRegistry;
begin
result := false;
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
// Zum Schlüssel des angegebenen Dateitypen springen,
// falls nicht vorhanden wird dieser erstellt
if reg.OpenKey('.' + fileext + '\Shell\' + caption + '\command', true) then
begin
//Anwendung eintragen, %1 übergibt den Dateinamen
reg.WriteString('', '"' + app + '" -mount 0,"%1"');
reg.CloseKey;
result := true;
end;
finally
FreeAndNil(reg);
end;
end;
Und hier die zum löschen:
Delphi-Quellcode:
// fileext ist die Erweiterung (ohne Punkt)
// caption ist der Text des Menüpunkts
// wird delfiletype mit true beantwortet wird die gesamte Dateierweiterung aus der
// registry gelöscht, mit false nur der Kontextmenüeintrag
function DelConMenu(fileext, caption: String; delfiletype: Boolean): Boolean;
var
reg: TRegistry;
begin
result := false;
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
if delfiletype then
begin
//Schlüssel löschen
if reg.KeyExists('.' + fileext) then
reg.DeleteKey('.' + fileext);
end else
begin
//Zum Schlüssel des angegebenen Dateitypen springen
if reg.OpenKey('.' + fileext + '\Shell\', false) then
begin
//Schlüssel löschen
reg.DeleteKey(caption);
reg.CloseKey;
result := true;
end;
end;
finally
FreeAndNil(reg);
end;
end;
Im Anhang befindet sich ein Screeny vom Schlüssel. Wie Mr_G richtig gesagt hat, für alle Dateien ist der Schlüssel "*".
PS: Für Schäden an der Registry übernehme ich keine Haftung.