Einzelnen Beitrag anzeigen

user69

Registriert seit: 10. Dez 2004
92 Beiträge
 
#1

Registrieren (Verknüpfen) von Dateierweiterungen unter Vista

  Alt 22. Feb 2009, 17:14
Hallo,

Was ist denn unter Vista der beste (und für den Benutzer) einfachste Weg Dateierweiterungen mit meine Programm zu verknüpfen.

Ich nutze folgenden CODE:
Code:
Code:
  WriteError:= False;
  Reg:= TRegistry.Create;
  Reg.RootKey:= HKEY_CLASSES_ROOT;
  Reg.OpenKey('.obj', True);
  try
    Reg.WriteString('', 'OBJ.Renderfile');
  except
    WriteError:= True;
  end;
  Reg.CloseKey;
  if not WriteError then begin
    Reg.OpenKey('OBJ.Renderfile', True);
    try
      Reg.WriteString('', 'Renderfile');
    except
      // 
    end;
    Reg.OpenKey('shell', True);
    Reg.OpenKey('open', True);
    Reg.OpenKey('command', True);
    try
      Reg.WriteString('', '"' + 'C:\Pfad\myprog.exe'+ '"' + ' "%1"');
    except
      // 
    end;
    Reg.CloseKey;
    Reg.CloseKey;
    Reg.CloseKey;
    Reg.CloseKey;
  end;


Unter XP war das ok (man brauchte aber trotzdem Admin Rechte).

Aber unter Vista ist das ja ein Problem mit UAC und den Adminrechten.
Ich starte mein Programm (Siehe manifest) as Invoker - so wird es ja für Vista empfohlen, wenn man nicht Adminrechte braucht.
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker"/>
</requestedPrivileges>
</security>

Funktionen, die Adminrechte benötigen sollte man in andere Programme legen habe ich gehört.
So funktioniert es auch, aber für Benutzer wäre es schön, wenn alles aus dem Hauptprogramm raus ginge. Niemand ruft mein Programm zum setzen der Dateiverknüpfungen auf.
Ein Unterprogramm mit Adminrechten aus meine Programm zu starten ist wohl laut Vita Gidelines auch nicht möglich, wenn mein Programm as Invoker läuft.



Wie kann ich nun dennoch aus meinem Programm Dateierweiterungen unter Vista setzen, ohne dass immer beim Programmstart meines Programms Adminrechte nötig sind.
Nachfragen nach Adminrechten beim Verknüpfungen setzen wäre ok.

Grüße
User69
  Mit Zitat antworten Zitat