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;