Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

InstallExt installiert Dateierweiterung erst nach Neustart

  Alt 11. Apr 2007, 09:43
Hi,

wieso installiert folgender Code eine Dateiendung nicht sofort, sondern erst nach einem Neustart ? Auch Strg+F5 im Explorer hat nichts gebracht.
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString, IconPfad: string; IconIndex: Integer = 0): Boolean;
var Reg: TRegistry;
begin
  Result := False;
  if Extension <> 'then
  begin
    if Extension[1] <> '.then
      Extension := '.' + Extension;

    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CLASSES_ROOT;
      if Reg.OpenKey(Extension, True) then
      begin
        Reg.WriteString('', ExtDescription);
        if Reg.OpenKey('\' + ExtDescription, True) then
        begin
          Reg.WriteString('', FileDescription);
          if Reg.OpenKey('DefaultIcon', True) then
          begin
            Reg.WriteString('', Format('%s,%d', [IconPfad, IconIndex]));
            if Reg.OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then
            begin
              Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString]));
              Result:=True;
            end;
          end;
        end;
      end;
    finally
      Reg.Free;
    end;
  end;
end;

// wie es hiermit steht weiß ich gerade nicht, aber ich poste ihn mal mit
function UnInstallExt(Extension, ExtDescription: String): Boolean;
var Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    try
      with Reg do
      begin
        RootKey := HKEY_CLASSES_ROOT;
        DeleteKey(Extension);
        DeleteKey('\' + ExtDescription);
        Result := True;
      end;
      if Reg.OpenKey('DefaultIcon', True) then
      begin
        Reg.DeleteKey('DefaultIcon');
        Result := True;
      end;
    except
      Result := False;
    end;
  finally
    Reg.Free;
  end;
end;
Ein Aufrufbeispiel:
InstallExt('.asd', 'asd irgendetwas', 'asd irgendetwas', 'asd.exe', '"%1"', 'asd.ico' , 0);
  Mit Zitat antworten Zitat