A seguir uma função Delphi pela qual foi me util, e sempre que presciso utilizar nunca a encontro, pelo metivo que utilizo uma vez na vida outra na morte..hehe.

A função serve para registrar um tipo de arquivo em especifico ao seu aplicativo, para você utiliza-lo com o ParamStr(x).

//***********************************************
//* Funçãozinha para registrar um tipo de arquivo
//* em especifico
//* ao meu programa, para abrir com o paramStr
//*
//* Nome : Dario Bednarz Biehl
//*
//***********************************************

unit utils;

interface

uses Registry, ShlObj, SysUtils, Windows;

procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription,
ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);

implementation

procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription,
ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;

// 1) Atribui a extensão ao tipo de arquivo, criando
// a extensão se ela já não existir

// Abre ou cria a chave HKCR\
Reg.OpenKey(cMyExt, True);
// HKCR\.\(Default)=""
Reg.WriteString('', cMyFileType);
Reg.CloseKey;

// 2) Atribui a descrição do tipo de arquivo, criando
// o tipo de arquivo se ele já não existir

// Abre ou cria a chave HKCR\
Reg.OpenKey(cMyFileType, True);
// HKCR\\(Default)=""
Reg.WriteString('', cMyDescription);
Reg.CloseKey; // Now write the default icon for my file type

// 3) Atribui o índice do ícone ao tipo de arquivo,
// criando a chave correspondente se ela já não existir

// Abre ou cria a chave HKCR\\DefaultIcon
Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
// HKCR\\DefaultIcon\
// (Default)=","
Reg.WriteString('', ExeName + ',' + IntToStr(IcoIndex));
Reg.CloseKey;

// 4) Escreve o comando para a ação Abrir (Open) no Windows
// Explorer, criando a ação se ela já não existir

// Abre ou cria a chave HKCR\\Shell\Open
Reg.OpenKey(cMyFileType + '\Shell\Open', True);
// HKCR\\Shell\Open\(Default)="&Open"
Reg.WriteString('', '&Open');
Reg.CloseKey;

// 5) Define a aplicação que será usada para executar a ação,
// criando a chava correspondente se ela já não existir

// Abre ou cria a chave HKCR\\Shell\Open\Command
Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
// HKCR\\Shell\Open\Command\
// (Default)=""" "%1""
// Sua aplicação deve analisar os parâmetros de linha de comando
// para saber qual o arquivo passado
Reg.WriteString('', '"' + ExeName + '" "%1"');
Reg.CloseKey;

// Finalmente, se você quiser que o Windows Explorer
// reconheça o tipo de arquivo imediatamente, basta
// chamar a API SHChangeNotify.
if DoUpdate then
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
finally
Reg.Free;
end;
end;

end.