skojarzenia plików WRR

0

Mam pytanie, czy komukolwiek działa poniższa procedura na skojarzenie danej aplikacji z plikiem. Mi działa tylko na niektórych rozszerzeniach (nie mam pojęcia czemu), np na pas działa, ale na txt już nie. A mam system windows XP, u mojego kolegi na 98 działało wszystko, a u drugiego - też połowa. Co jest nie tak?

Oto kod:

procedure rejestruj(roz:string);
var
 Reg: TRegistry;
 r2: TRegistry;
begin

r2:=tregistry.Create;
r2.rootkey:=hkey_classes_root;
//if r2.KeyExists('.'+roz) then
begin

 Reg := TRegistry.Create;
 try
  try
   Reg.RootKey := HKEY_CLASSES_ROOT;
   Reg.OpenKey('.'+roz,True);
   Reg.WriteString('',roz+'File');
   Reg.CloseKey;
   Reg.OpenKey(roz+'file\DefaultIcon', True);
   Reg.WriteString('','"'+Application.ExeName+'" "%1"');
   Reg.CloseKey;
   Reg.OpenKey(roz+'file\shell\open\command', True);
   Reg.WriteString('','"'+Application.ExeName+'" "%1"');
   Reg.CloseKey;
   Reg.OpenKey(roz+'file\shell\Edytuj', True);
   Reg.WriteString('', 'Otwórz w programie...');
   Reg.CloseKey;
   Reg.OpenKey(roz+'file\shell\Edytuj\command', True);
   Reg.WriteString('', '"'+ Application.ExeName+'" "%1"');

  except

   raise Exception.Create(' Wystąpił błąd związany z rejestrem!');
  end;
 finally
  Reg.Free;
 end;
end;
end;
0

Ta procedura wygląda całkiem sensownie, tylko r2 jest w ogóle nie potrzebne.
Spróbuj, przed rejestracją rozszerzenia, usunąć najpierw klucz roz + 'file' i klucz roz:

Reg.DeleteKey(roz + 'file');
Reg.DeleteKey(roz);
{....rejestracja rozszerzenia....}

Może to pomoże.

1 użytkowników online, w tym zalogowanych: 0, gości: 1