Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как связать определенное расширение файлов с моим приложением?

01.01.2007

В Win32 необходимо создать новую запись в реестре в корневом ключе HKEY_CLASSES_ROOT, которая будет указывать на расширение файла, командную строку и иконку, которая будет отображаться для этого расширения. В Win16, просто включить расширение файла и командную строку в секцию [Extensions] в Win.ini.

Пример:

uses 
  Registry, {For Win32} 
  IniFiles; {For Win16} 
 
{Для Win32} 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  reg.RootKey := HKEY_CLASSES_ROOT; 
  reg.LazyWrite := false; 
  {Add Program Support} 
  reg.OpenKey('.bor\shell\open\command', true); 
  {Имя файла будет передавать в приложение как первый параметр}
  reg.WriteString('', 'C:\Program Files\Borland\Delphi 3\Project1.exe %1'); 
  {Добавляем отображаемую иконку}
  reg.CloseKey; 
  reg.OpenKey('.bor\DefaultIcon',true); 
  {Для отображения используем первую иконку в нашем приложении}
  reg.WriteString('', 'C:\Program Files\Borland\Delphi 3\Project1.exe,0');
  reg.CloseKey; 
  reg.free; 
end; 
 
{Для Win16} 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  WinIni : TIniFile; 
  WinIniFileName : array[0..MAX_PATH] of char; 
  s : array[0..64] of char; 
begin 
  GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName)); 
  StrCat(WinIniFileName, '\win.ini'); 
  WinIni := TIniFile.Create(WinIniFileName); 
  WinIni.WriteString('Extensions', 
                     'bor', 
                     'C:\PROGRA~1\BORLAND\DELPHI~1\PROJECT1.EXE ^.bor'); 
  WinIni.Free; 
  StrCopy(S, 'Extensions'); 
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S)); 
end;

Взято из https://forum.sources.ru