通过对注册表进行修改,可以实现一种文件名后缀与某个应用程序相关联 
程序例如下:
procedure registerfiletype(ft,key,desc,icon,prg:string);
//ft:文件名后缀,如可以为'.tst'或'afile.tst'
//key:在注册表中的键值,要唯一
//desc:关联程序的描述
//icon:缺省的程序图标,如Application.ExeName+',1',可以缺省
//prg:对应的应用程序
var myreg : treginifile;
    ct : integer;
begin     // 取文件的后缀
     ct := pos('.',ft);
     while ct > 0 do begin
           delete(ft,ct,1);
           ct := pos('.',ft);
     end;
     if (ft = '') or (prg = '') then exit; //判断后缀及应用程序是否有效
     ft := '.'+ft;
     myreg := treginifile.create('');
     try
        myreg.rootkey := hkey_classes_root; // 根应该为HKEY_CLASSES_ROOT
        if key = '' then key := copy(ft,2,maxint)+'_auto_file'; 
        // 如果没给出键值,则自动创建一个
        myreg.writestring(ft,'',key); // 写入描述的键值
        myreg.writestring(key,'',desc); // 写入描述
        if icon <> '' then
           myreg.writestring(key+'\DefaultIcon','',icon); 
           // 写入缺省图标
        myreg.writestring(key+'\shell\open\command','',prg+' "%1"'); 
           //写入相关联的应用程序
     finally
            myreg.free;
     end;
end; 
调用例子:
Example:
       registerFileType('.tst',
                        'testfile',
                        '测试关联文件',
                        Application.ExeName+',1',
                        Application.ExeName);
原理说明:
    程序关联的键值放在注册表根为HKEY_CLASSES_ROOT下面。实现文件关联要写入两
个键值:后缀键值和描述键值(可用术语用的不对)
    如实现将.tst与程序tstfile.exe相关联
    其中后缀键值形为:  .tst       myprogram
    key值为文件后缀,取值为对于key的一个描述
    描述键值形为:       myprogram 文件描述
    其中还有相应的子键,如缺省的程序图标,形为:
                         myprogram\DefaultIcon  '', 'tstfile.exe,1'
    打开命令,形为:
                         myprogram\shell\open\command '', 'tstfile.exe "%1"'
    写入完这两个键值后就可以实现文件与应用程序相关联了。