Du "wurschtelst" ganz schön in der Registry rum. Was machst du denn, wenn du mal einen bereits vorhandenen Eintrag erweitern möchtest, dessen interner Name (bei dir die Variable "typ") nicht aus der Dateiendung und dem Anhängsel "file" zusammengesetzt ist?
Um deine Frage zu beantworten: "KeyExists" bzw. "ValueExists" ist schon richtig. Wo du ein Problem mit den Edits hast, weiß ich jetzt nicht.

Wenn du "KeyExists" verwenden willst, musst überprüfen ob der Schlüssel existiert. Und da du die Einzelteile ja bereits in der Funktion als Parameter übergibst, wird es doch wohl kein Problem sein, daraus noch mal den Schlüssel zusammenzubauen? Das gleiche gilt für den Wert "Command", den du vermutlich mit "ValueExists" prüfen möchtest.
Ansonsten, kurz und schmerzlos:
TFileTypeRegistration (Dateityp registrieren)